Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 代码没有继续循环_Loops_Python 3.x_Indexing - Fatal编程技术网

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)
,该函数接受int
nums
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
的位置。。。