-3

我在这个问题上取得了进展,但它总是只返回列表中的第一个值。我的代码中缺少什么?

编写一个名为 add_numbers 的函数,它接收一个列表参数。它从开始返回列表中所有数字的总和,直到找到至少 10 个。如果找不到大于或等于 10 的数字,则返回列表中所有数字的总和。

def add_numbers(a):

total = 0

i = 0

  while a[i] < 10:

    total = total + a[i]

    i = i + 1

    return total

第二个是:

编写一个名为 make_list 的函数,它接收一个数字参数。它返回从 0 到比数字参数小一的数字列表。

如果被问及所有数字的总和,我知道该怎么做,但我对列表感到困惑。

最后一个是:

编写一个名为 count_bricks 的函数,它接收一个数值参数。此函数返回金字塔中的砖的数量,即许多层高。金字塔中的每一层都比它上面的一层多一块砖。

甚至不知道从哪里开始。

我在这里先向您的帮助表示感谢。这不是家庭作业,它只是一个充满问题的样本测验——这些是我无法回答的问题。

4

3 回答 3

2

您必须将 return 放在循环之外,否则该值将在第一次迭代时返回。

def add_numbers(a):
    total = 0
    i = 0
    while a[i] < 10 and i < len(a):
        total = total + a[i]
        i = i + 1
    return total        # return  should be outside the loop

提示第二个问题:

  1. 创建一个接受一个输入的函数
  2. 使用内置函数range()返回一个新列表。
于 2013-03-20T20:40:10.587 回答
0

第一个问题:

添加检查以在列表结束时结束循环:

while a[i] < 10 and i < len(a):

第二个问题:

阅读 Python 的列表。只需循环数字的时间并将数字添加到列表中。最后返回那个列表。

于 2013-03-20T20:40:28.543 回答
0
def add_numbers(a):
    """
        returns the total of all numbers in the list from the start, 
        until a value of least 10 is found. If a number greater than 
        or equal to 10 is not found, it returns the sum of all numbers in the list.
    """
    total = 0
    index = 0
    while index < len(a):
        total = total + a[index]
        if a[index] >= 10:
            break
        index += 1
    return total
于 2013-03-20T20:48:03.400 回答