我正在为我的编码训练营准备应用程序的准备材料.这是我在使用(使用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
当我跑步
lucky_sevens([2, 1, 5, 1, 0])
我认为这是打印False,因为它只考虑第0、1和2位置的元素(总和为8,而不是7).
它应该显示True,因为位于第一,第二和第三位置的元素总计为7.(1 5 1 = 7).
有人可以提供建议吗?我会很感激.
解决方法:
是的,您的情况仅考虑第一,第二和第三要素.这是因为您的函数中没有任何循环.
在Python循环中,构造是for和while的.因此,您将需要使用其中之一.
我可以给您一些提示,而不是提供完整的代码(否则您将如何学习?)-
>您需要遍历从第一个索引(0)到len(numbers)-2的索引.一个简单的函数可以帮助您做到这一点,它将是enumerate(),当使用for循环对其进行遍历时,它会同时显示索引以及实际元素(如果使用enumerate,则需要设置一个条件来检查索引是否为小于len(数字)-2).
>然后,您还应该从索引1 pos和索引2的位置获取元素,并对它们求和并检查是否等于7,如果是,则应返回True.
>许多错误是在不满足上述(2)条件的情况下返回False的一个常见错误,但是实际上您需要做的就是仅在根本没有匹配项时(在函数末尾)返回它.
标签:list,sum,python
来源: https://codeday.me/bug/20191027/1947735.html