用于打印字符串中的数字位数的python代码

时间:2014-03-26 23:49:26

标签: python-3.x

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


#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

2 个答案:

答案 0 :(得分: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]

你的计算工作正常。

答案 1 :(得分: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