如何在Python中检查输入中0到9出现的次数并放入列表?
我该怎么检查输入中数字 0
到 9
各出现了多少次,并把结果放到一个列表里呢?
比如说,当有人输入 122033
时,这个函数应该返回下面这个列表:
[1,1,2,2]
result[0]=1
表示数字 0 出现了 1 次result[1]=1
表示数字 1 出现了 1 次result[2]=2
表示数字 2 出现了 2 次result[3]=2
表示数字 3 出现了 2 次
请帮帮我,我在这方面卡了有一两天了。它说我应该用 result = 10 * [0]
来开始。
这里有一个输出的例子:
Enter a string of numbers: 4567899678
4 occurs 1 time
5 occurs 1 time
6 occurs 2 times
7 occurs 2 times
8 occurs 2 times
9 occurs 2 times
到目前为止,我试过这个,但我觉得这不是我应该做的。
def countdigits(aString):
d = {}
for i in aString:
if i in d:
d[i] = d[i]+1
else:
d[i] = 1
return d
def main():
aString=input("Enter numbers:")
print(countdigits(aString))
main()
3 个回答
0
去掉零:
def count_digits(s):
res = [0]*10
for x in s:
res[int(x)] += 1
while 0 in res:
re.remove(0)
return res
2
虽然你的任务用比如说 Counter
这种方法解决会更好,正如其他答案所提到的,但这并不符合使用 result = 10 * [0]
的提示。下面是预期的解决方案:
def digit_count(number):
# Make sure number is a string
number = str(number)
counts = [0] * 10
for digit in number:
counts[int(digit)] += 1
return counts
counts = digit_count(122033)
for digit, count in enumerate(counts):
if count == 0:
continue
print "{0} occurs {1} time{2}".format(
digit, count, "" if count == 1 else "s")
请注意,digit_count
只接受正整数或者数字字符串。如果你传入负数、小数或者复数,它会抛出一个值错误(ValueError)。
3
>>> import collections
>>> a = collections.Counter([1,1,2,2])
>>> a
Counter({1: 2, 2: 2})
>>> a[1]
2
>>> a[2]
2
>>>
def count_digits(s):
res = [0]*10
for x in s:
res[int(x)] += 1
return res
如果你不应该使用 collections
: