【问题标题】:Sorting values in a text file in python [duplicate]在python中对文本文件中的值进行排序[重复]
【发布时间】:2020-03-25 22:03:06
【问题描述】:

我正在开发一款游戏,我需要为其添加排行榜。我编写了一个允许用户添加高分、查看高分和删除所有高分的代码。现在我需要按照从高到低的顺序对所有分数进行排序。这是我目前的代码 [注意:我知道这不是最好的菜单,但我稍后会更改它]:

choice = input(str("Would you like to add a high score to the leader board?: "))
if choice == "y":
    user1 = input(str("Enter username 1: "))
    hs1 = input(str("Enter high score: "))
    user2 = input(str("Enter username 2: "))
    hs2 = input(str("Enter high score: "))
    data1 = user1 + ": " + hs1
    data2 = user2 + ": " + hs2
    with open("leaderboard.txt","a") as file:
        file.write(data1)
        file.write("\n")
        file.write(data2)
        file.write("\n")
        print("Data added.")
elif choice == "n":
    final_list = []
    with open("leaderboard.txt","r") as file:
        first_list = file.readlines() 
        for i in first_list: 
            final_list.append(i.strip())
        print("Leader board")
        print("-------------")
        for count in range(0,len(final_list)):
            print(final_list[count])

else:
    with open("leaderboard.txt","w") as file:
        file.write(" ")
        print("leader board cleared.")

我希望在订购这样的东西后显示排行榜:

1. James F: 32
2. Harris W: 18
3. Courtney J: 12

感谢您的阅读!

【问题讨论】:

  • 我会考虑将文件读入 python 数据结构,对其进行排序,然后重新写入文件。不过,我可能过于复杂了。此外,请考虑更好地保护擦除功能,因为现在任何拼写错误(即大写 Y 而不是 y)都会导致排行榜被清除。
  • 我可以编写一个更强大的菜单 我如何编写这个菜单仅供我自己参考。你是说喜欢使用二维数组吗?
  • @EvanDilkes,我在考虑逐行读取文件。将每一行存储到一个列表中,并在": " 上拆分值。这应该给你一个元组列表。然后看到这个对元组列表进行排序:geeksforgeeks.org/…,然后用新的排序列表覆盖文件。
  • 我找到了另一个解决方案,但我会研究你所说的,谢谢你的贡献!

标签: python list file


【解决方案1】:

我发现我可以像这样首先使用数字数据重组数据保存到文本文件的方式:

user1 = input(str("Enter username 1: "))
    hs1 = input(str("Enter high score: "))
    user2 = input(str("Enter username 2: "))
    hs2 = input(str("Enter high score: "))
    data1 = hs1 + " - " + user1
    data2 = hs2 + " - " + user2

现在数据以数字开头,我可以简单地使用列表中的.sort 对它们进行排序,但是它们会从最低到最高排序,所以我不得不使用.reverse() 来翻转列表。

【讨论】:

    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2021-08-20
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多