def has23(nums):
if (2 or 3) in nums:
return True
else:
return False
结果对多数人来说是正确的。
但对于has23[3,3]
或[3,9]
来说,这是假的。
我在代码中有'或'参数,不应该意味着它会寻找2和3以及n如果找到任何它将给出真。
请告诉我,我错过了什么概念?
答案 0 :(得分:4)
def has23(nums):
return (2 in nums) or (3 in nums)
表达式(2 or 3)
返回值2,因此列表[3,3]不会通过。
答案 1 :(得分:1)
2 or 3
评估为2
,因此您需要检查2
是否在nums
。相反,请说if 2 in nums or 3 in nums:
。但是,您并不真正需要if
语句,因为您只需返回表达式的结果:
return 2 in nums or 3 in nums
答案 2 :(得分:1)
如果它是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)
答案 3 :(得分:0)
你应该这样做,它会做你想要的逻辑。
def has23(nums):
if 2 in nums or 3 in nums:
return True
else:
return False