如果数据在一行中,则为True



如果200连续出现3次,我希望此函数打印True。否则为False。

def aList(n):

if n.count(200) >= 3:
return True
else:
return False
print(aList([100, 200, 200, 300, 200]))

目前它返回True,因为200存在3次或更多次,但它应该返回False,因为它不是在一行中出现的。

编辑:即使我在列表上迭代,如果发生x次,我如何才能提取True。

for i in range(len(n)):
if i == 200:
return True
else:
return False

您需要一个变量来跟踪您在一行中看到数字的次数。当您匹配该值时加一,如果不匹配则将计数重置为0。如果达到阈值,则返回true。如果在未达到阈值的情况下完成循环,则返回false。

def aList(n):
count = 0
for i in n:
if i == 200:
count += 1
else:
count = 0
if count == 3:
return True
return False
print(aList([100, 200, 200, 300, 200]))  # -> False
print(aList([100, 200, 200, 200]))  # -> True

因此,您试图完成的任务需要考虑位置元素。。。因此,您需要一个计数器来跟踪计数,并在不匹配时将其恢复为零。。这里有一点伪代码,但像这样。。

def nums_in_row(aList, target_num):
count = 0
for nums in aList:
if count ==3:
return True
elif nums == target_num:
count+=1
else:
count = 0
return False

在您的示例中,target_num将是200,aList将是列表本身。你可以进一步推广你的函数,但根据你的问题,它似乎已经足够了。

相关内容

最新更新