我正在学习python。我正在寻求这个计划的见解。给定一个int数组长度为2,返回真,如果它含有2或3
问题描述:
def has23(nums):
if (2 or 3) in nums:
return True
else:
return False
结果出来适合多数部分。 但has23[3,3]
或[3,9]
它是未来假的。 我有“或”在代码中的说法,应该不是意味着它会寻找2和3个和n如果发现任何的它会给真实的。 请告诉我,什么概念,我在这里失踪?我正在学习python。我正在寻求这个计划的见解。给定一个int数组长度为2,返回真,如果它含有2或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):
return (2 in nums) or (3 in nums)
表达(2 or 3)
返回值2,因此列表[3,3]不会通过。
答
你应该这样做,相反,它会做你想要的逻辑。
def has23(nums):
if 2 in nums or 3 in nums:
return True
else:
return False
+2
不要编写一个测试来返回相同的结果(一个布尔值) – Linkid
这是运营商的优先级,你错过了。首先执行'(2或3)',结果是'2',而不是检查'if 2 in nums'。 –
见https://stackoverflow.com/questions/15581837/return-true-if-array-contains-a-2-or-a-3太 – Linkid