Python:函数输出结果不符合预期

Python:函数输出结果不符合预期,python,Python,欢迎大家,我想就遇到的问题征求您的意见,因为输出不符合预期 我的代码如下: score = [] total = 0 def mark(): counter = 1 size = int(input("Please Enter The Number of Subjects in Semester: ")) for cnt in range (size): value = int(input(f"Please Enter Mar

欢迎大家,我想就遇到的问题征求您的意见,因为输出不符合预期

我的代码如下:

score = []
total = 0
def mark():
    counter = 1
    size = int(input("Please Enter The Number of Subjects in Semester: "))
    for cnt in range (size):
        value = int(input(f"Please Enter Mark of Subject {counter} : "))
        score.append(value)
        counter = counter + 1
    total = sum(score)

mark()
print(score)
print(total)
输出为:

Please Enter The Number of Subjects in Semester: 2
Please Enter Mark of Subject 1 : 10
Please Enter Mark of Subject 2 : 10
[10, 10]
0
问题1:在不使用全局变量的情况下,如何将打印(总)输出转换为列表中值的总和而不是0

问题2:为什么列表可以追加,但分数不等于总和?

添加

global total

作为函数的第一行。实际上,函数中的
total
与函数外部的
total
是一个单独的变量。作为另一种选择,你可以考虑从函数返回分数和总数;通常,全局变量是个坏主意。

这是一个范围问题。您需要在函数中包含行
global total
。习惯于将参数传递到函数中并返回结果:
return score,total
,在调用端:
score,total=mark()
“为什么列表可以追加,但分数不等于总和?”-因为您正在修改列表对象,它仍然是相同的列表对象,但是您重新分配了变量
total
,这使它成为一个完全独立于同名全局变量的函数局部变量。