2016-11-08 151 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

你是绝对正确的。我编辑了回应。谢谢! =) –