gpt4 book ai didi

python - Codecademy 类(class)平均水平

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:35 24 4
gpt4 key购买 nike

我在第 28 行有一个错误:

UnboundLocalError: local variable 'total referenced before assignment. 

但是总计在第 24 行的第 28 行上方被引用。我不明白发生了什么。我正在尝试编写的代码是取每个学生的测试、测验和家庭作业分数的平均值。

感谢您的帮助。

lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
def average(some):
return sum(some)/len(some)

students = [lloyd, alice, tyler]

total = 0

def get_class_average(students):
for student in students:
total += get_class_average(students)
return float(total) / len(students)

print get_class_average(students)

最佳答案

如果要在函数中分配给它,则需要将 total 标记为全局:

def get_class_average(students):
global total
for student in students:
total += get_class_average(students)
return float(total) / len(students)

通过分配给给定的变量,您将其标记为本地名称,除非您明确将其标记为全局名称。

您可能希望将total移入函数而不是将其设为全局函数:

def get_class_average(students):
total = 0
for student in students:
total += get_class_average(students)
return float(total) / len(students)

您似乎没有在代码的其他地方使用它,因此在这里将其设置为全局变量有点过分了。

您的下一个问题是递归调用 get_class_average();该函数调用自身,传入完全相同的参数。该函数永远不会返回。我怀疑您打算改为调用 average() 函数,为每个学生传递一个特定列表,例如 homework 键或 quizzes测试:

def get_class_average(students, key):
total = 0
for student in students:
total += average(student[key])
return float(total) / len(students)

homework_average = get_class_average(students, 'homework']

关于python - Codecademy 类(class)平均水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com