2014-03-26 66 views
0

编写一个程序,该程序为0到9之间的列表生成100个随机整数,并显示列表中每次出现数字时的计数。这两天一直在摸索着。下面是我尝试过的所有丑陋的黑客中最接近的。 由于某种原因,我的输出始终为零,并尝试多次尝试。任何帮助,将不胜感激。用于打印字符串中数字位数的python代码


#Count single digits 
import random 

rand = [] 

num = 0 
while num < 10: 
    num = num + 1 
    int = [random.randint(0, 9)] 
    #print(rand, end="") 
    rand.append(int) 

print(rand) 
print("") 


print("Number of zeros is ", rand.count(0)) 
print("Number of ones is ", rand.count(1)) 
print("Number of twos is ", rand.count(2)) 
print("Number of threes is ", rand.count(3)) 
print("Number of fours is ", rand.count(4)) 
print("Number of fives is ", rand.count(5)) 
print("Number of sixes is ", rand.count(6)) 
print("Number of sevens is ", rand.count(7)) 
print("Number of eights is ", rand.count(8)) 
print("Number of nines is ", rand.count(9)) 

输出:

[[8], [6], [1], [8], [7], [0], [4], [7], [8], [7]] 

Number of zeros is 0 
Number of ones is 0 
Number of twos is 0 
Number of threes is 0 
Number of fours is 0 
Number of fives is 0 
Number of sixes is 0 
Number of sevens is 0 
Number of eights is 0 
Number of nines is 0 

Process finished with exit code 0 
+0

你看过[collections.Counter](http://docs.python.org/2/library/collections.html#counter-objects)吗? –

回答

2

请注意,您的rand列表结束了包含一串单个元素的列表:

[[8], [6], [1], [8], [7], [0], [4], [7], [8], [7]] 

那是因为你裹在列表中的每个条目这里:

int = [random.randint(0, 9)] 

当你算的0 S(例如)在列表中的号码,得到的答复是0因为名单只包含[0],不0实例。

试试这个:

int = random.randint(0, 9) 

然后你rand列表将显示如下信息:

[8, 6, 1, 8, 7, 0, 4, 7, 8, 7] 

而且你的计数将正常工作。

+0

是的,只要我发布这个,并回到我的代码我尝试了我自己的。喜欢如何张贴到这个网站让你专注于你在做什么比如果你没有做得更好。我拧了两天!尽管感谢你疯狂的快速反应! – vonbraun

+2

@ user2363753 - 甚至有一个名字。 http://en.wikipedia.org/wiki/Rubber_duck_debugging –

+0

爱维基链接。这对我来说很有意义,因为在我做这些工作时,我没有一个团队可以交谈......所以您自己学习起来要困难得多。 – vonbraun

0
>>> import collections, random 
>>> nums = [random.randint(0,9) for i in range(10)] 
>>> nums 
[5, 9, 7, 4, 5, 3, 8, 1, 2, 1] 
>>> counts = collections.Counter(nums) 
>>> counts 
Counter({1: 2, 5: 2, 2: 1, 3: 1, 4: 1, 7: 1, 8: 1, 9: 1}) 
>>> counts[1] 
2 
>>> counts[6] 
0