在codingbat网页的list 1python中,它要求我编写一个定义,如果两个元素的数组包含数字2或3,则返回true,我写道:
def has23(nums):
for i in range(nums):
if i == 2 or i ==3:
return True
else:
return False
但它似乎无法处理返回has23([4, 3])
的False
。我已经知道了解决方案(多亏了python社区的人),但我真的不明白我写的定义有什么问题。在
有人能帮忙吗?在
Tags:
问题是您只需检查第一个值,然后返回}。相反,请按以下步骤操作:
True
或{1)
2)
@Ricardo
建议:return (2 in nums) or (3 in nums)
3)
@thefourtheye
建议:return len(set(nums) & {2, 3}) > 0
4)
@thefourtheye
也建议return set(nums).isdisjoint({2, 3})
5)
@RemcoGerlich
建议return any(i == 2 or i == 3 for i in nums)
6)或者如果您想使用您的循环类型:
^{pr2}$[注]
我在用lambda测试这个问题,这里有一个方法来测试任意数量的检查: 这将检查
to_check
中是否有任何元素在lst
中7)
我知道这和你的问题没有直接关系,但这可能是个值得关注的问题。相当漂亮。在
另一种方式:
<8)
>>> print len(set(bar) & set(to_check)) > 0
您的代码确实存在问题:
^{pr2}$nums
是一个列表,因此不能与它一起使用range
。您可以使用range(len(num))
,然后检查num[0]
,num[1]
,等等但你可以:
它确实会浏览
nums
中的所有值。在您不需要浏览所有值并检查:
最后,您可以跳过测试,只需执行以下操作:
相关问题 更多 >
编程相关推荐