目前,我正在尝试在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
答案 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']