2016-11-08 134 views
0

我有一個程序打印出一個scorebord或排名列表,在這一刻我有一個名單與團隊名稱,分數和玩過的遊戲,但我也想打印出的位置與range() 。 代碼去如下:兩條語句進入打印循環

for a in rankinglist: 
    for pos in range(1, 33): 
     print(format(pos) + 
      format(a.name, '>18') + 
      format(str(a.games), '>7') + 
      format(str(a.score), '>11')) 

rankinglist是強隊之列,並pos應該是一個範圍從1到32 我的目的是打印出這一點:

1    team1  0   0 
2    team2  0   0 
3    team3  0   0 
4    team4  0   0 
5    team5  0   0 
6    team6  0   0 
7    team7  0   0 
8    team8  0   0 
9    team9  0   0 
10   team10  0   0 
... 

而是我獲得每個團隊打印32次的循環。

1    team1  0   0 
2    team1  0   0 
3    team1  0   0 
4    team1  0   0 
5    team1  0   0 
6    team1  0   0 
7    team1  0   0 
8    team1  0   0 
9    team1  0   0 
10   team1  0   0 
11   team1  0   0 
12   team1  0   0 
13   team1  0   0 
14   team1  0   0 
15   team1  0   0 
16   team1  0   0 
17   team1  0   0 
18   team1  0   0 
19   team1  0   0 
20   team1  0   0 
21   team1  0   0 
22   team1  0   0 
23   team1  0   0 
24   team1  0   0 
25   team1  0   0 
26   team1  0   0 
27   team1  0   0 
28   team1  0   0 
29   team1  0   0 
30   team1  0   0 
31   team1  0   0 
32   team1  0   0 

任何人都知道一種方法來解決這個問題?

+0

你不需要2'for'循環,在第二個for循環中,你只需遍歷'pos'並且'a'不會改變,那是因爲'team1'打印出來了! – Arman

回答

2

這是怎麼回事?

for pos, a in enumerate(rankinglist, 1): 
    print(format(pos) + 
     format(a.name, '>18') + 
     format(str(a.games), '>7') + 
     format(str(a.score), '>11')) 
+3

我同意這將是正確的方法。請注意,問題是索引從1開始,所以你需要'enumerate(rankinglist,1)' – yoniLavi

+0

你是絕對正確的。我編輯了迴應。謝謝! =) –