我正在为我申请编码训练营准备材料。这是一个我正在努力解决的实践问题(使用Python):
“编写一个函数‘lucky_sevens(numbers)’,该函数接受一个整数列表,如果任何三个连续元素的总和为7,则输出True。 请确保代码正确检查数组的第一个和最后一个元素。“
我知道如何在一个数组中一次循环一个元素,但不知道如何“保留”一个元素,同时还要根据第一个元素评估第二个和第三个元素,正如这个提示所要求的那样。从下面的尝试中可以看出,我不确定何时/何地/如何增加索引值来搜索整个列表。在
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
当我跑的时候
^{pr2}$打印错误,我想是因为它只考虑第0、1和2个位置的元素(根据需要,总和为8,而不是7)。在
它应该打印为True,因为第一、第二和第三位置的元素总和为7。(1+5+1=7)。在
谁能提个建议吗?我将不胜感激。在
试试这个:
你的不起作用的原因是你没有循环它,你只检查列表中的前3个元素。在
是的,就你的情况而言,它只考虑第一、第二和第三个要素。这是因为函数中没有任何循环。在
Python中的循环构造是}。所以你需要使用任何一个。在
for
和{我可以给你一些关于这个问题的提示,而不是提供完整的代码(否则你将如何学习?)-在
您需要遍历从第一个索引(0)到} ,它在使用
len(numbers) -2
的索引。一个可以帮助您做到这一点的简单函数是^{for
循环对其进行迭代时输出索引和实际元素(如果您使用的是enumerate,则需要设置一个条件来检查索引是否应小于len(numbers) - 2
)。然后您应该从
index+1
pos和index+2
位置获取元素,并对它们求和并检查其是否等于7
,如果是,则返回True
。许多人犯的一个常见错误是,如果不满足上述(2)条件,则返回
False
,但实际上您需要做的是仅在根本没有匹配项的情况下(在函数的末尾)返回它。您需要在列表中循环以计算所有元素。在代码中,只计算前3个元素。在
相关问题 更多 >
编程相关推荐