我试图简化这个:
def get_average(name):
homework=average(name["homework"])
quizzes=average(name["quizzes"])
tests=average(name["tests"])
weighted_mark= homework *0.1+ quizzes*0.3 + tests*0.6
return weighted_mark
所以我使用循环:
def get_average(name):
component = ["homework","quizzes","tests"]
for thing in component:
thing = average(name[thing])
weighted_mark= homework *0.1+ quizzes*0.3 + tests*0.6
return weighted_mark
但是控制台显示语法错误:变量“homework”未定义。
不
thing = average(name[thing])
定义变量?
这是我与之合作的dictionary
答案 0 :(得分:1)
您不能创建这样的变量。 thing = 2
将始终为您提供名为thing
的变量,此名称指向的内容无关紧要。
由于您没有系数结构,因此您仍需要在打印期间枚举这三个组件。如果你想摆脱这个,你可以创建一个字典:
weights = {
"homework": 0.1,
"quizzes": 0.3,
"tests": 0.6,
}
然后像这样使用它
weighted_mark = sum(average(name[thing]) * weights[thing] for thing in weights)
答案 1 :(得分:0)
您没有声明变量。对于该propouse,您可以做两件事:从列表中声明变量,或使用字典。
如果您想动态创建变量,可以使用globals()[]
:
for x in component:
globals()[x] = average(name[x])
如果你想创建一个字典,请执行下一步:
resultado = dict()
for x in component:
resultado[x] = average(name[x])
答案 2 :(得分:0)
我会通过字典连接权重和组件。然后在循环中计算加权标记。
def get_average(name):
component = {"homework":0.1, "quizzes":0.3, "tests":0.6}
weighted_mark = 0
for thing in component:
weighted_mark = weighted_mark + average(name[thing]) * component[thing]
return weighted_mark