使用用户名更新排行榜

时间:2018-10-03 11:42:01

标签: python python-3.x

目前,我正在尝试在python中制作一个排行榜,该排行榜将在代码末尾的文件中自动更新。到目前为止,我设法做到了,因此文件将打开文件,对其进行排序然后输出,然后使用以下代码将其保存回文件:

f = open('Leaderboard.txt', 'r')
leaderboard = [line.replace('\n','') for line in f.readlines()]
f.close()


leaderboard.sort(reverse=True)


for i in leaderboard:
    print(i)


with open('Leaderboard.txt', 'w') as f:
    for item in leaderboard:
        f.write("%s\n" % item)

但是,这将无法正常工作。排序工作正常,因为文本文件中的数字位于用户名之前,如下所示: 12, User1 18, User2 14, User3 10, User4 30, User5

但是,我需要它来替换阵列中特定用户的得分(例如,得分高于最高得分之一)。如果User3的得分为20,则需要将数组更改为:

['12, User1','18, User2','14, User3', '10, User4', '30, User5']

在对其进行排序之前。有谁能在这里为我提供帮助的解决方案?

获胜者代码

if Player1Points>Player2Points:
    Winner_Points = Player1Points
    Winner = user1
elif Player2Points>Player1Points:
    Winner_Points = Player2Points
    Winner = user2

1 个答案:

答案 0 :(得分:0)

如果您尝试使用User 3的新分数更新该特定列表,则可以将枚举.split()一起使用

如果您使用新的高分和得分用户创建 tuple winner,然后将其与现有的列表(如果{{ 1}}匹配并且新的高分更高,则如果分数较小则什么都没发生,将旧值UserX替换为14, User3

20, User3
l = ['12, User1','18, User2','14, User3', '10, User4', '30, User5']
winner = (20, 'User3')

for idx, item in enumerate(l):
    if item.split(', ')[1] == winner[1] and int(item.split(', ')[0]) < winner[0]:
            l[idx] = '{}, {}'.format(winner[0], winner[1])
    else:
        pass 

print(l)

您可以像这样格式化赢家并使用上面的代码:

['12, User1', '18, User2', '20, User3', '10, User4', '30, User5']