【发布时间】:2020-05-05 09:48:41
【问题描述】:
需要订购我在 repl.it 的程序中创建的排行榜。
排序时,目前似乎根据每个条目的第一个数字对其进行排序,因此所有个位数字条目都正确排序,但所有两位数字仅按第一个数字排序,因此例如将 11 排序为低于 2它读作 1。
有什么想法吗?
注意。排行榜存储名称和分数,分数肯定存储为字符串,因此我需要将其更改为到目前为止您的建议中的整数。谢谢你。试图在第二行更改 - file.write(str(score)) - 但告诉我必须是一个字符串而不是 int。帮助?下面这部分的代码。
file = open ("Leaderboard.txt", "a")
file.write(str(score))
file.write(",")
file.write(nickname)
file.write("\n")
file.close()
Leaderboard1 = list()
Leaderboard_unsorted = "Leaderboard.txt"
with open (Leaderboard_unsorted) as fin:
for line in fin:
if line[0] != "0":
Leaderboard1.append(line.strip())
Leaderboard1.sort(reverse = True)
【问题讨论】:
-
在排序前将值转换为整数...
-
听起来您的排行榜正在使用字符串作为您尝试排序的值。对字符串
["3", "25","111"]进行字符串排序将输出111,25,3,因为 1 在 2 之前,2 在 3 之前等。如果你想对它们进行数字排序,你需要它们是整数而不是字符串。当然,展示你的代码会让你更容易肯定地告诉你,而不是我们只是猜测 -
我们缺少关键和基本信息,我确信 repl.it 与问题无关。
-
谢谢大家。现在已经包含了有问题的代码。关于如何将分数作为字符串更改为整数的任何帮助都会很棒。谢谢!
标签: python leaderboard repl.it