我知道这个问题是基本的,但我需要一些适当的逻辑解释,请原谅我的无知。我定义了一个函数,如果数字 2 或 3 在列表中,则返回 True,否则返回 False。它适用于 2 或 3。但也适用于其他人......我只是不明白为什么。这是我的功能的一瞥:def has23(nums): if (2 or 3 in nums): return True else: return False# has23([4,5])# True # Why
3 回答
Helenr
TA贡献1780条经验 获得超3个赞
这是因为 python 将条件解释为(2) or (3 in nums)
. 2 不是零,所以它总是评估为真。简单的解决方法是2 in nums or 3 in nums
.
幕布斯6054654
TA贡献1876条经验 获得超7个赞
这是因为 2 作为常数始终为真,并且由于它是“或”条件,因此永远不会检查该条件是否有“或”的其他部分。所以,你可以做些什么来解决这个问题,如下所示。
def has23(nums):
if (2 in nums or 3 in nums):
return True
else:
return False
否则,不管 2 是多少,如果你在条件的第一部分给出任何常数,你总是会得到真实的结果。希望这能解释。
慕田峪4524236
TA贡献1875条经验 获得超5个赞
https://docs.python.org/3/reference/expressions.html#operator-precedence
下表总结了 Python 中的运算符优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)。
请注意,比较、成员资格测试和身份测试都具有相同的优先级并且具有从左到右的链接......
所以python解释器把它当作(2 - always True) or (3 in nums).
添加回答
举报
0/150
提交
取消