如何在 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
。然而,它只在那里找到了一件东西,所以它没有任何东西可以分配给 score
。 classn.txt
文件中的某处有一行不以 x - y
形式出现,因此当您尝试 split()
它时,它只会产生一个值。
据我所知,您也不需要 rstrip()
line
,因为它来自 readlines()
,它基本上在 '\n'
上拆分文件] 反正
我正在使用 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
。然而,它只在那里找到了一件东西,所以它没有任何东西可以分配给 score
。 classn.txt
文件中的某处有一行不以 x - y
形式出现,因此当您尝试 split()
它时,它只会产生一个值。
据我所知,您也不需要 rstrip()
line
,因为它来自 readlines()
,它基本上在 '\n'
上拆分文件] 反正