如何在 Python 中的用户名上附加 3 个最新结果?

How to append 3 latest results onto the user’s name in Python?

我正在使用 Python 生成数学测验并将测验结果与用户名一起存储在文本文件中。我计划通过附加到用户名来存储用户的最后三个分数(如果它已经存在于文本文件中)并删除旧分数(如果超过三个)。这是我到目前为止所做的:

with open("class%s.txt" % classnumber, "a") as my_class:

    my_class.write("{0}\n".format([name, score]))

with open("class%s.txt" % classnumber, "r+")as file:

  file.seek(0)

    scores = file.readlines()

user_scores = {}

for line in scores:

    name, score = line.rstrip('\n').split(' - ')

    score = int(score)

    if name not in user_scores:

        user_scores[name] = []       

    user_scores[name].append(score)  

    if len(user_scores[name]) > 3:   

        user_scores[name].pop(0)  

当我尝试 运行 此代码时,弹出以下错误消息:

Traceback (most recent call last):

 File "H:\Documents\Documents\Computing\Programming tasks\task 2 - Copy 

(2).py", line 56, in <module>

name, score = line.rstrip('\n').split(' - ')

ValueError: need more than 1 value to unpack

任何人都可以帮助我理解我做错了什么。

它试图将 line.rstrip('\n').split(' - ') 解压缩为两个值,将一个放入 name,将另一个放入 score。然而,它只在那里找到了一件东西,所以它没有任何东西可以分配给 scoreclassn.txt 文件中的某处有一行不以 x - y 形式出现,因此当您尝试 split() 它时,它只会产生一个值。

据我所知,您也不需要 rstrip() line,因为它来自 readlines(),它基本上在 '\n' 上拆分文件] 反正