我正在尝试编写一个函数,该函数使用for循环迭代整数列表,如果列表中有两个2,则返回True
,否则False
。例如,当我使用print(has22([1, 2, 2]))
调用它时,它应该返回True
。我是Python的新手,所以这是我到目前为止所做的,我不确定在and
之后要放置什么来指定我希望它检查下一次迭代以查看它是否是2
好。任何帮助表示赞赏。
def has22(nums):
"""Checks a list for two 2's"""
for num in nums:
if num == 2 and
return(True)
else: return(False)
答案 0 :(得分:1)
def has22(nums):
for count,num in enumerate(nums):
try:
if num == 2 and nums[count+1]==2:
return(True)
except IndexError: pass
return(False)
尝试枚举。
答案 1 :(得分:1)
您可以使用内置any()
来检查两个连续的两个,如下所示:
def has22(nums):
return True if any(nums[i] == 2 and nums[i+1] == 2 for i in range(len(nums)-1) else False
或者,您可以将for循环修改为以下内容:
def has22(nums):
for i in range(len(nums)-1):
if nums[i] == 2 and nums[i+1] == 2:
return True
return False
答案 2 :(得分:0)
def has22(nums):
"""Checks a list for two 2's"""
gotone = False
for num in nums:
if num == 2:
if gotone:
return True
else:
gotone = True
else:
gotone = False
return(False)
答案 3 :(得分:0)
首先,将两个变量(一个用于记录最后一个num,另一个用于记录当前num)设置为非2.然后,遍历所有数字并首先将当前数字设置为num
。然后,将最后一个数字变量(last_num
)和当前数字变量(current_num
)与2
进行比较。如果两者都返回True,则return True
。然后,将last_num
设置为该数字。最后,如果找不到任何内容,return False
。
def has22(nums):
last_num = -1
current_num = -1
for num in nums:
current_num = num
if (current_num == 2) and (last_num == 2):
return True
last_num = num
return False