当我在列表中添加数字并打印它时,它只添加第一个数字

时间:2017-11-14 15:50:31

标签: python python-3.x add

当我print(sum(n))时,我得到7而不是列表元素的总和32。我做错了什么?

def sum(numbers):
    total = 0
    for number in numbers:
        total += number
        return total

n = [7, 12, 5, 8]
print (sum(n))

3 个答案:

答案 0 :(得分:3)

如果return语句在for循环中,那么它将在迭代一次后返回总数,因此total的值将是循环中的第一个元素:在这种情况下,7。你应该在循环之后放置return语句,以便计算整个总数:

def sum(numbers):

    total = 0

    for number in numbers:

        total += number

    return total

n = [7, 12, 5, 8]
print(sum(n))

但是,sum()已经是Python中的内置函数,因此您只需将代码简化为以下内容:

n = [7, 12, 5, 8]
print(sum(n))

其中任何一个都会打印32

答案 1 :(得分:2)

让我们一步一步解释:

def sum(numbers):
    total = 0
    for number in numbers:
        total += number
        #If you return here, you wont sum the rest, just the first

    return total # Return must go outside the for loop, because it breaks the execution

n = [7, 12, 5, 8]
print (sum(n))

答案 2 :(得分:2)

您的金额会立即返还,您不会等待列表循环播放。