我被要求从文件中读取(firesideResults.txt) 必须从firesideResults.txt文件计算每个玩家的总分数 并将它们显示在排行榜中。 •每场胜利必须获得3分。 •必须只包括赢得至少一场比赛的排行榜中的球员。 •必须以以下格式显示详细信息:
这是我目前的代码:
def option_C():
print("-Fixtures Leaderboard-")
print('\nPlayer Nickname\t\tMatches Played\t\tMatches Won\t\tMatches Lost\t\tPoints')
print('-' * 65)
for line in open('firesideResults.txt'):
line = line.strip()
nickname,played,won,lost = line.split(",")
if int (won) >0:
points = int(won)*3
print(nickname+'\t'+played+'\t\t'+won+'\t\t'+lost+'\t\t'+str(points)
但我似乎无法将其显示在从最高到最低的排行榜中。
TXT FILE
Leeroy,19,7,12
詹金斯,19,8,11
泰勒,19,0,19
拿破仑威尔逊,19,7,12Big Boss,19,7,12
Game Dude,19,5,14
Macho Man,19,3,16
太空海盗,19,6,13
Billy Casper,19,7,12O
TACON,19,7,12
大哥,19,7,12
英社,19,5,14
里普利,19,5,14
M'lady,19,4,15
Einstein100,19,8,11
丹尼斯,19,5,14
电子竞技,19,8,11
RNGesus,19,7,12
凯斯,19,9,10
幅度,19,6,13
答案 0 :(得分:1)
而不是在一个循环中读取和打印所有内容,
首先将其读入列表
然后使用Python的sorted
函数,阅读此处排序here
print("-Fixtures Leaderboard-")
print('\nPlayer Nickname\t\tMatches Played\t\tMatches Won\t\tMatches Lost\t\tPoints')
print('-' * 65)
scores = []
for line in open('firesideResults.txt'):
line = line.strip()
nickname,played,won,lost = line.split(",")
if int (won) >0:
points = int(won)*3
else:
points = 0
scores.append((nickname, played, won, lost, points))
sorted_scores = sorted(scores, key= lambda x: x[4], reverse=True)
for score in sorted_scores:
print('%s\t%s\t%s\t%s\t%s' % score)
Lambda是一种没有名字的函数,请在此处阅读Python Sorted
请注意sorted_scores行中的lambda x: x[4]
,这表示根据第4列对列表进行排序。您可以通过更改4
一切顺利
答案 1 :(得分:0)
不要立即打印结果,而是考虑将每一行存储在Player类中,然后将其添加到播放器列表中。迭代文件后,您可以使用sorted()中的key参数轻松按分数对列表进行排序。例如,如果您的玩家列表被调用" player_list"并且玩家类具有属性" points,"您的排序代码可能类似于
player_list = sorted(player_list, key = lambda player: player.points)
此时您可以轻松浏览列表并打印每个玩家的统计数据。