2013-05-04 122 views
1

我有一个关于嵌套for循环结果的查询。嵌套循环结果

代码

dieCount = [0,0,0,0,0,0,0,0,0,0,0] 

Die1 = random.randint(1,10) 
dieCount[Die1] = dieCount[Die1] + 1 

Die2 = random.randint(1,10) 
dieCount[Die2] = dieCount[Die2] + 1 

Die3 = random.randint(1,10) 
dieCount[Die3] = dieCount[Die3] + 1 


print ("Dice Roll Stats:") 
index = 1 
print ("\nFace Frequency") 
while index < (len(dieCount)): 
    print (index) 
    for number in range(dieCount[index]): 
     print ("*") 
    index = index + 1 

结果:

Face Frequency 
1 
2 
3 
4 
* 
5 
6 
* 
7 
8 
9 
* 
10 

对于我的生活,我不能弄清楚如何得到像这样的结果:

Face Frequency 
1 
2 
3 
4* 
5 
6* 
7 
8 
9* 
10 

如果请不要回答为了让我可以通读它,我尝试了很多不同的代码,但我仍然没有得到一个体面的结果。我可以使用print(“*”,end =''),但会在数字前附加*。像明智的我尝试了一些像打印(索引,“*”),然后del dieCount [Die1]等..删除重复的数字,但是将完全从列表中删除数字。

回答

1

试试这个:

index = 1 
print ("\nFace Frequency") 
while index < (len(dieCount)): 
    output = str(index) 
    for number in range(dieCount[index]): 
     output += "*" 
    print(output) 
    index = index + 1 

但是我会写这样的:

import random 

dieCount = [0]*10 

for i in range(3): 
    dieCount[random.randint(0,9)] += 1 

for i,v in enumerate(dieCount): 
    print(str(i) + v * '*') 

请注意,您的代码有一个错误,您的列表初始化为11个零,但您的随机只产生10个可能的数字。 Python中的列表索引从0开始,所以你一直缺少列表的第一项。

+0

非常感谢你,我试过这样的事情,我一定写错了。 – BenniMcBeno 2013-05-04 02:36:38

1

您不需要嵌套循环。您可以使用字符串倍增,只是其附加到你的初始print语句像这样结束:

while index < (len(dieCount)): 
    print (str(index) + "*" * dieCount[index]) 
    index += 1