Python:列表是否包含3个和为7的连续整数?

2024-09-26 18:01:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我申请编码训练营准备材料。这是一个我正在努力解决的实践问题(使用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)。在

谁能提个建议吗?我将不胜感激。在


Tags: ofthe函数true元素forlennumbers
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和{}。所以你需要使用任何一个。在

我可以给你一些关于这个问题的提示,而不是提供完整的代码(否则你将如何学习?)-在

  1. 您需要遍历从第一个索引(0)到len(numbers) -2的索引。一个可以帮助您做到这一点的简单函数是^{},它在使用for循环对其进行迭代时输出索引和实际元素(如果您使用的是enumerate,则需要设置一个条件来检查索引是否应小于len(numbers) - 2)。

  2. 然后您应该从index+1pos和index+2位置获取元素,并对它们求和并检查其是否等于7,如果是,则返回True

  3. 许多人犯的一个常见错误是,如果不满足上述(2)条件,则返回False,但实际上您需要做的是仅在根本没有匹配项的情况下(在函数的末尾)返回它。

您需要在列表中循环以计算所有元素。在代码中,只计算前3个元素。在

相关问题 更多 >

    热门问题