逻辑条件不完全满足

2024-09-30 05:14:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这个问题很基本,但我需要一些合理的解释,请原谅我的无知。 我定义了一个函数,如果数字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

Tags: or函数in功能falsetrue列表return
3条回答

这是因为2是一个常数总是真的,因为它是一个'或'条件,条件从来没有得到'或'的其他部分检查。所以,你能做什么来解决这个问题如下。你知道吗

 def has23(nums):
  if (2 in nums or 3  in nums):
    return True 
  else:
    return False

否则,不考虑2,如果你在条件的第一部分给出任何常数,你总是会得到真的。希望这能解释。你知道吗

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

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

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

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

这是因为python将条件解释为(2) or (3 in nums)。2不是零,所以它总是求值为真。琐碎的解决方法是2 in nums or 3 in nums。你知道吗

相关问题 更多 >

    热门问题