def has23(nums):
if (2 or 3) in nums:
return True
else:
return False
结果对大部分人来说是正确的。但对于has23[3,3]
或[3,9]
来说,这是错误的。我在代码中有"or"参数,这不应该意味着它会再寻找 2 和 3,如果找到其中任何一个,n 将给出 true。请告诉我,我在这里缺少什么概念?
def has23(nums):
return (2 in nums) or (3 in nums)
表达式 (2 or 3)
返回值 2,因此列表 [3,3] 不会传递。
2 or 3
的计算结果为 2
,因此您正在检查2
是否在nums
中。 相反,说if 2 in nums or 3 in nums:
. 但是,您实际上并不需要 if
语句,因为您可以只返回表达式的结果:
return 2 in nums or 3 in nums
您可以显式检查每个元素是 2 还是 3:
def has23(nums):
for i in nums:
if i in (2, 3):
return True
return False
另一种方法是使用生成器:
def has23(nums):
return any(i in (2,3) for i in nums)
你应该这样做,它会做你想要的逻辑。
def has23(nums):
if 2 in nums or 3 in nums:
return True
else:
return False