Python:列表是否包含3个连续的整数,其总和为7?
我正在准备参加编码训练营的申请材料。这是一个我正在努力解决的实践问题(使用Python): “编写一个函数‘lucky_sevens(numbers)’,该函数接收整数列表,如果任意三个连续元素的总和为7,则打印True。”。 确保代码正确检查数组的第一个和最后一个元素。“ 我知道如何一次循环一个数组中的一个元素,但不知道如何“保持”一个元素,同时根据此提示评估与第一个元素相关的第二个和第三个元素。从我下面的尝试中可以看出,我不确定何时/何地/如何增加索引值来搜索整个列表Python:列表是否包含3个连续的整数,其总和为7?,python,list,sum,Python,List,Sum,我正在准备参加编码训练营的申请材料。这是一个我正在努力解决的实践问题(使用Python): “编写一个函数‘lucky_sevens(numbers)’,该函数接收整数列表,如果任意三个连续元素的总和为7,则打印True。”。 确保代码正确检查数组的第一个和最后一个元素。“ 我知道如何一次循环一个数组中的一个元素,但不知道如何“保持”一个元素,同时根据此提示评估与第一个元素相关的第二个和第三个元素。从我下面的尝试中可以看出,我不确定何时/何地/如何增加索引值来搜索整个列表 def lucky_s
def lucky_sevens(numbers):
index1 = 0 # For assessing 1st of 3 numbers
index2 = index1 + 1 # For assessing 2nd of 3 numbers
index3 = index2 + 1 # For assessing 3rd of 3 numbers
# If all index values are within the list...
if index1 <= (len(numbers) - 2) and index2 <= (len(numbers) - 1) and index3 <= len(numbers):
# If the values at those indices sum to 7...
if numbers[index1] + numbers[index2] + numbers[index3] == 7:
print True
else:
print False
# I think the increments below may be one of the places I am incorrect
index1 += 1
index2 += 1
index3 += 1
我认为这是错误的,因为它只考虑第0、第1和第2个位置的元素(根据需要求和到8,而不是7)
它应该打印为True,因为第一、第二和第三位置的元素总和为7。(1 + 5 + 1 = 7).
有人能提供一个建议吗?非常感谢。您需要在列表中循环以评估所有元素。在代码中,只计算前3个元素。尝试以下方法:
def lucky_sevens(numbers):
for i in range(0, len(numbers)):
if sum(numbers[i:i + 3]) == 7:
print True
return
print False
你的不起作用的原因是因为你没有循环它,你只检查列表中的前3个元素。是的,对于你的情况,它只考虑第一、第二和第三个元素。这是因为函数中没有任何循环 Python中的循环结构是
for
和while
。因此,您需要使用其中任何一个
我可以给你一些关于这个问题的提示,而不是提供完整的代码(否则你怎么学习?)-
len(number)-2的索引。一个简单的函数可以帮助您做到这一点,它在使用for
循环迭代时吐出索引和实际元素(如果您使用的是enumerate,则需要设置一个条件来检查索引是否应小于len(numbers)-2
)
index+1
pos和index+2
位置获取元素,并将它们相加,检查它们是否等于7
,如果是,您应该返回True
False
,但实际上,您需要做的是仅在完全没有匹配项时(在函数末尾)才返回它使用递归怎么样
def lucky_sevens(numbers, index=0):
if index <= len(numbers):
if sum(numbers[index:index + 4]) == 7:
return True
else:
index += 1
return lucky_sevens(numbers[1:], index)
return False
def lucky_seven(数字,索引=0):
如果索引可能相关:谢谢你的链接,@Tyler。很有意思。如果最后两个数字中的一个是7,或者如果最后两个数字加起来是7,则此操作将失败。您的变量名有拼写错误:是数字,不是number@ReblochonMasque谢谢,修正了。你说得对,我用了“如果”而不是“为了”。非常感谢。非常感谢。是的,另一张海报也指出我用的是“如果”而不是循环。哦!
def lucky_sevens(numbers, index=0):
if index <= len(numbers):
if sum(numbers[index:index + 4]) == 7:
return True
else:
index += 1
return lucky_sevens(numbers[1:], index)
return False