Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:字符串索引必须是整数,而不是str,它指的是哪一部分?_Python_List_Dictionary - Fatal编程技术网

Python 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.

我是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.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
。我无法复制你的新版本。哇..奇怪,也许是版本的问题,我会设法弄清楚的。谢谢!