擅长:python、mysql、java
<p>这条线:</p>
<pre><code>if hiLo == 'l' and system_number == 1 or system_number == 2 or system_number == 3:
</code></pre>
<p>是这样评估的:</p>
<pre><code>if (hiLo == 'l' and system_number == 1): # Enter block
elif system_number == 2: # Enter block
elif system_number == 3: # Enter block
else: # Don't enter block
</code></pre>
<p>所以<code>hiLo == 'l'</code>部分(当前)只影响第一个<code>system_number == 1</code>测试。如果<code>system_number</code>是2或3,则无论<code>hiLo</code>的值是多少,代码都将进入块。你知道吗</p>
<p>这是因为<code>or</code>运算符比<code>and</code>运算符有一个<a href="https://docs.python.org/3/reference/expressions.html#operator-precedence" rel="nofollow noreferrer"><strong>higher precedence</strong></a>。你知道吗</p>
<p>所以你可能想要这样的东西:</p>
<pre><code>if hiLo == 'l' and (system_number == 1 or system_number == 2 or system_number == 3):
</code></pre>
<p>或者</p>
<pre><code>if hiLo == 'l' and system_number in [1,2,3]:
</code></pre>
<p>或者</p>
<pre><code>if hiLo == 'l' and (1 <= and system_number <= 3):
</code></pre>