Loops 代码没有继续循环
我需要编写一个函数Loops 代码没有继续循环,loops,python-3.x,indexing,Loops,Python 3.x,Indexing,我需要编写一个函数has22(nums),该函数接受intnums的list,如果列表中某个地方包含2旁边的2,则返回True 我的做法: def has22(nums): for i in range(len(nums)-1): if nums[i] == 2 and nums[i+1] == 2: return True else: return False print(has22([1, 2, 2])
has22(nums)
,该函数接受intnums
的list
,如果列表中某个地方包含2旁边的2,则返回True
我的做法:
def has22(nums):
for i in range(len(nums)-1):
if nums[i] == 2 and nums[i+1] == 2:
return True
else:
return False
print(has22([1, 2, 2])) **Should** evaluate to: True #Got: False
print(has22([1, 2, 21, 2])) evaluates to: False
print(has22([2, 1, 2])) evaluates to: False
print(has22([2, 2])) evaluates to: True
print(has22([4, 3, 2, 1])) evaluates to: False
我需要做什么才能使函数继续循环?问题是在第一对之后立即返回
False
!相反,您应该仅在扫描整个列表后返回False
def has22(nums):
for i in range(len(nums)-1):
if nums[i] == 2 and nums[i+1] == 2:
return True
return False
或者,您也可以使用zip(nums,nums[1:])
生成所有连续数字对:
def has22(nums):
return (2, 2) in zip(nums, nums[1:])
好的,这可能无法回答您的问题,但这里有一个简单的替代方法,可以代替搜索两个连续的两个:
def has22(nums):
return (2, 2) in zip(nums, nums[1:])
您当前的代码只比较第一对。重新考虑实际发生的返回False
的位置。。。