Python TypeError:字符串索引必须是整数,而不是str,它指的是哪一部分?
我是python的初学者,这里可能会有一些基本的问题。有人能帮忙吗 我想得到每个学生的平均值,然后计算这些平均值的平均值。Get“TypeError:字符串索引必须是整数,而不是str”。无法确定它所指的内容以及如何修改。这是我的密码:Python TypeError:字符串索引必须是整数,而不是str,它指的是哪一部分?,python,list,dictionary,Python,List,Dictionary,我是python的初学者,这里可能会有一些基本的问题。有人能帮忙吗 我想得到每个学生的平均值,然后计算这些平均值的平均值。Get“TypeError:字符串索引必须是整数,而不是str”。无法确定它所指的内容以及如何修改。这是我的密码: lloyd = { "name": "Lloyd", "homework": [90.0, 97.0, 75.0, 92.0], "quizzes": [88.0, 40.0, 94.0], "tests": [75.0, 90.
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(numbers):
total = sum(numbers)
total = float(total)
return total/len(numbers)
def get_average(student):
homework = average(student["homework"])
quizzes = average(student["quizzes"])
tests = average(student["tests"])
return 0.1*homework + 0.3*quizzes + 0.6*tests
def get_class_average(students):
results = []
for student in students:
result = get_average(student)
results.append(result)
return average(results)
students = ["lloyd", "alice", "tyler"]
print get_class_average(students)
将名称括在引号中时,它是字符串文字,而不是变量
>>> x = 3
>>> x
3
>>> 'x'
'x'
使用
students=[lloyd,alice,tyler]
引用您在上面定义的变量。您是否阅读过回溯,它会准确地告诉您它引用的是哪一行?是的,我读过,但它列出了许多行。总是不确定是哪一行导致了问题。即使你不完全理解它,你至少可以把它包括在内。为了帮助解释它:通常,从底部开始,在错误之前调用最后一行。好的,谢谢提示。:)谢谢你指出这一点。我改变了学生名单。但现在它发出警报:TypeError:“float”对象不可调用,它认为它是“total=float(total)”。所以我引用它,仍然是一样的。并将每个学生的分数改成整数,也不起作用。@EmmaZhao-我在Python 2解释器中运行了您的原始代码(使用指定的更改),得到了83.866667
。我无法复制你的新版本。哇..奇怪,也许是版本的问题,我会设法弄清楚的。谢谢!