我正在处理Python online exercise。
任务是:
Given an array of ints, return True if the array contains a 2 next to a 2 somewhere. has22([1, 2, 2]) → True has22([1, 2, 1, 2]) → False has22([2, 1, 2]) → False
到目前为止我得到的代码:
def has22(nums):
for i in range (len(nums)-1):
if nums[i+1]==2 and nums[i]==2:
return True
break
将返回所有True
个实例,但我想不出为False
个实例包含语句的方法(我想坚持使用控制流解决方案)。有什么建议吗?
答案 0 :(得分:3)
你不需要在return语句后中断,你只需要添加"返回False" for循环中的语句
def has22(nums):
for i in range (len(nums)-1):
if nums[i+1]==2 and nums[i]==2:
return True
return False
答案 1 :(得分:3)
您可以使用any
和generator expression:
def has22(nums):
return any(nums[i+1] == nums[i] == 2 for i in range(len(nums)-1))
演示:
>>> def has22(nums):
... return any(nums[i+1] == nums[i] == 2 for i in range(len(nums)-1))
...
>>> has22([1, 2, 2])
True
>>> has22([1, 2, 1, 2])
False
>>> has22([2, 1, 2])
False
>>>