Python 该计划不会让我得到每个学生的最后三分

Python 该计划不会让我得到每个学生的最后三分,python,list,file,text,Python,List,File,Text,3类文本文件的数据为: user_scores = {} #This adds to the list of names user_scores[name].append(score) for line in scores: name, score = line.rstrip('\n').split(' - ') score = int(score) if name not in user_scores or user_scores[name] < score:

3类文本文件的数据为:

user_scores = {}
#This adds to the list of names
user_scores[name].append(score)
for line in scores:
    name, score = line.rstrip('\n').split(' - ')
    score = int(score)
    if name not in user_scores or user_scores[name] < score:
        user_scores[name] = score
for name in sorted(user_scores):
    print(name, '-', user_scores[name])
print(user_scores[name][-3:])
student scored 3
student scored 8
student scored 0
student scored 4
student scored 10
student scored 3
student scored 0
student scored 4
user_scores
将是一个充满列表的列表,因此每个名字都有一个分数列表

更新: 我试过:

那么,我如何让程序根据学生的姓名获得最后三分呢?我尝试了许多其他方法,但没有一种有效。

这里:

    user_scores[name].append(score)
TypeError: list indices must be integers, not str
您正试图将项目附加到列表中,但
user\u scores[name]
不是列表,因为user\u scores是一个空字典

如果你想要一件又快又脏的东西做你想做的事,那么:

user_scores = {}
user_scores[name].append(score)

您的代码存在多个问题,但类似的内容至少可以为您提供所需的输出。我保留了您在代码前面使用的打印语法以保持一致性,但正如前面提到的,您应该使用其他技术。

不要重复:三个if op块之间的区别是什么?编写一个函数,在参数中输入差异,使用这个函数。使用
.format
进行字符串格式化,而不是
str
+
。不要使用
eval
。代码很难维护,并且无法检测到错误。那么,我应该如何处理它呢?如何将用户的分数设置为列表,而不是字典?我应该试试:“user_scores=[]”吗?很抱歉,您能澄清一下您希望代码做什么吗?到目前为止,我收集的信息是:1。询问用户名。2.请求用户类。3.为用户提供一个包含10个问题的测验,并跟踪用户分数。4.将用户分数添加到用户类的文本文件中。5.用户参加测试后,您到底想向用户输出什么?然后输出用户的最后三个分数。但是,用户可以根据调用的用户的类别查找任何用户的分数以及存储在文本文件中的分数。我修改了答案。我想你想要的是能正常工作的东西。正如其他人之前提到的,您的代码存在多个问题,但这可能会起作用。A
collections.defaultdict
可以使此代码更简单一些。
user_scores = []
user_scores[name].append(score)
for line in scores:
    name, score = line.rstrip('\n').split(' - ')
    score = int(score)
    if name not in user_scores or user_scores[name] < score:
        user_scores[name] = score
for name in sorted(user_scores):
    print(name, '-', user_scores[name])
print(user_scores[name][-3:])
    user_scores[name].append(score)
TypeError: list indices must be integers, not str
user_scores = {}
user_scores[name].append(score)
user_scores = {}

for line in scores:
    name, score = line.rstrip('\n').split(' scored ')
    score = int(score)
    if name not in user_scores:
        user_scores[name] = []
    user_scores[name].append(score)

for name in sorted(user_scores.keys()):
    print(name + '-' + user_scores[name])

print(user_scores[name][-3:])