为了账号安全,请及时绑定邮箱和手机立即绑定

逻辑条件不完全满足

逻辑条件不完全满足

月关宝盒 2022-06-07 19:30:45
我知道这个问题是基本的,但我需要一些适当的逻辑解释,请原谅我的无知。我定义了一个函数,如果数字 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.



查看完整回答
反对 回复 2022-06-07
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

这是因为 2 作为常数始终为真,并且由于它是“或”条件,因此永远不会检查该条件是否有“或”的其他部分。所以,你可以做些什么来解决这个问题,如下所示。


 def has23(nums):

  if (2 in nums or 3  in nums):

    return True 

  else:

    return False

否则,不管 2 是多少,如果你在条件的第一部分给出任何常数,你总是会得到真实的结果。希望这能解释。


查看完整回答
反对 回复 2022-06-07
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

https://docs.python.org/3/reference/expressions.html#operator-precedence

下表总结了 Python 中的运算符优先级,从最低优先级(最少绑定)到最高优先级(最多绑定)。

请注意,比较、成员资格测试和身份测试都具有相同的优先级并且具有从左到右的链接......

所以python解释器把它当作(2 - always True) or (3 in nums).


查看完整回答
反对 回复 2022-06-07
  • 3 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信