擅长:python、mysql、java
<p>给出:</p>
<pre><code>if ("*") or ("/") in Oper_NAN: print("POSITIVE") else print("NEGATIVE")
</code></pre>
<p>你的<code>or</code>的每一面都会被单独评估。所以你在考虑这两种说法是否正确:</p>
<pre><code>("*")
("/") in Oper_NAN
</code></pre>
<p>第一个字符串是长度非零的字符串,在布尔上下文中总是作为<code>True</code>计算。所以你的<code>if</code>语句总是<code>True</code>,因为<code>True</code>或与任何事物相关的语句总是<code>True</code>。你知道吗</p>
<p>最简单的解决方法是:</p>
<pre><code> if ("*") in Oper_NAN or ("/") in Oper_NAN:
</code></pre>
<p>您也可以使用<code>any()</code>和生成器表达式来编写它,不过这对于两个字符来说可能有些过分:</p>
<pre><code>if any(c in Oper_NAN for c in "*/"):
</code></pre>