gpt4 book ai didi

python - 我如何编写/维护一个 .txt 文件,其名称和时间(分数列表)按时间增加排序?

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:52 24 4
gpt4 key购买 nike

这是我到目前为止所拥有的,但它不起作用:

def InsertInsideTheTopPlayer (name, time):

players = []
with open("playersScores.txt") as f:
for line in f:
name, time = line.split(',')
time = float(time)
players.append((name, time))

players.sort(key=lambda s: s[1])
strtime = str(time)
for name, time in players:
f.write("%s\n" % (name+", "+ strtime))

name 是一个字符串,time 是一个 float (四舍五入到小数点后两位)。

经过一些编辑,这就是我所拥有的:

def InsertInsideTheTopPlayer (name, time):

players = []
strtime = str(time)
players.append((name, strtime))
with open("playersScores.txt", "r") as f:
for line in f:
name, strtime = line.split(',')
players.append((name, strtime))
f.close()

players.sort(key=lambda tup: tup[1])

with open("playersScores.txt", "w") as f:
for (name, strtime) in players:
f.write("%s\n" % (name+","+ strtime))
f.close()

它适用于 2 次迭代,然后给出:

line 10, in <module>
players.append((name, strtime))
builtins.ValueError: need more than 1 value to unpack

排序似乎添加了空行谁能指出我如何解决这个问题的正确方向?

将第 8 行和第 9 行移动到 if line != '\n': 是一种解决方法,但我不知道如何阻止空行的发生。

if line != '\n':
name, strtime = line.split(',')
players.append((name, strtime))

最佳答案

有几个问题:

  • 您永远不会将新玩家添加到玩家列表中(您传递的是姓名和时间,您可能需要以players = [(name, time)]之一开始,或者players.append((name, time)) 在循环之后)。
  • 您尝试读取和写入同一个文件句柄,您需要关闭f(使用f.close()),然后重新打开它写作。
  • 您需要在循环内重置 strtime,否则您将用第一个玩家的时间覆盖每个玩家的时间

关于python - 我如何编写/维护一个 .txt 文件,其名称和时间(分数列表)按时间增加排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33922040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com