2017-03-15 41 views
0

我被要求從文件中讀取(firesideResults.txt) 必須從firesideResults.txt文件 中計算每位玩家的積分總數,並將它們顯示在排行榜中。 •必須每場贏得三分。 •它必須只包括在贏得至少一場比賽的排行榜中的球員。 •必須以這種格式顯示的詳細信息:創建帶有變量的排行榜[python]

這是我當前的代碼:

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文件

Leeroy,19,7,12

詹金斯,19,8,11

泰勒,19,0,19

拿破崙·威爾遜,19,7, 12個

大老闆,19,7,12

遊戲老兄,19,5,14

男子漢,19,3,16

宇宙海盜,19,6,13

比利·卡斯帕,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

目前你只是讀從文件中的每一行,打印它,沒有排序代碼,所以它沒有得到排序。 –

+0

對不起,打擾你,但你能告訴我怎麼做,我真的卡住:/ –

+0

你想如何排序清單?最高匹配?最高勝率?最高損失? –

回答

1

而不是閱讀和打印於一身環,

首先讀入一個列表

然後使用Python的sorted功能,閱讀關於此排序Python Sorted

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是怎麼樣的一個沒有名字的功能,在這裏瞭解一下Lambdas

請注意lambda x: x[4]在sorted_scores線,這是說那種基於第4列的列表中,您可以通過其他列進行排序,以及通過改變4

所有最優秀的

+0

我有一個去tysm! –

+0

我認爲它很好,但即時通訊在mac和line.split似乎沒有工作。暱稱,玩過,贏了,輸了= line.split(「,」) ValueError:沒有足夠的值解包(預計4,得到1) –

0

不要馬上打印結果,應考慮將每行存儲在Player類中,然後將其添加到玩家列表中。迭代遍歷文件後,可以使用sorted()中的關鍵參數輕鬆地對列表進行排序。例如,如果您的播放列表被稱爲「player_list」和玩家類具有屬性「點」你的排序代碼可能看起來像

player_list = sorted(player_list, key = lambda player: player.points) 

在這一點上,你可以很容易地通過列表和打印迭代每個球員的統計。

+0

什麼是lambda,我是一個基本上是單線函數的python xD –

+0

'noob'。在這種情況下,它用於聲明一個將Player對象轉換爲可用於排序的整數的函數。 – Justin