2024-09-30 05:14:44 发布
网友
我知道这个问题很基本,但我需要一些合理的解释,请原谅我的无知。 我定义了一个函数,如果数字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
这是因为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).
(2 - always True) or (3 in nums).
这是因为python将条件解释为(2) or (3 in nums)。2不是零,所以它总是求值为真。琐碎的解决方法是2 in nums or 3 in nums。你知道吗
(2) or (3 in nums)
2 in nums or 3 in nums
这是因为2是一个常数总是真的,因为它是一个'或'条件,条件从来没有得到'或'的其他部分检查。所以,你能做什么来解决这个问题如下。你知道吗
否则,不考虑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
。你知道吗相关问题 更多 >
编程相关推荐