Write a function lucky_sevens(numbers), which takes in an array of integers and returns true if any three consecutive elements sum to 7.
为什么这不产生真的输出?最后3个值总和=7。在
def lucky_sevens(numbers):
x, y = 0, 3
sum_of_numbers = sum(numbers[x:y])
while (sum_of_numbers != 7) and (y < len(numbers)):
x = x + 1
y = y + 1
if sum_of_numbers == 7:
return True
else:
return False
print(lucky_sevens([1,2,3,4,5,1,1]))
像这样简单的事怎么样
或者用你的原始代码,清理一下。在
^{pr2}$错误出现在while循环中。当您循环时,}更新它。在
sum_of_numbers
保持不变。相反,您必须为while循环中的每个新的x
和{还有一些重复的东西,比如}为False时到达那一行。在
else: return False
,可以简化为return False
,因为它只能在{最后,
x = x + 1
可以用更常见的速记x += 1
来写,y = y + 1
也是如此。在问题是当函数第一次被调用时,
sum_of_numbers
变量被分配了列表中前3个值之和的值,并且从未用新的x
,y
值更新,您可能需要创建一个回调函数来实现该行为。在现在,您需要将
sum
语句移动到while
循环中,以便使用新的x
,y
值更新总和:这应该能做到:
列表理解将一次移动列表中的3个数字,并计算每组三个整数的和。如果
7
在该列表中,则有3个连续的数字和7
。否则,就没有了有一点需要注意的是,进行这种列表理解需要列表中包含3个以上的元素。这就是为什么会有if语句。在
如果你想使用你的原始代码,你只需要做一些调整。你的逻辑就在那里,只是需要清理一下。在
^{pr2}$您只需在
while
循环中重做sum
。这样,sum_of_numbers
会随着每个循环和每个新的索引选择而更新。在相关问题 更多 >
编程相关推荐