统计数字问题:
一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。数字计数问题要求对给定书的总页码n, 计算出书的全部页码中分别用到多少次数字0,1 ,2,...,9。
要求:
输入格式:
输入只有1行,给出表示书的总页码整数n。
输出格式:
输出共有10行, 在第k行输出页码中用到的数字k-1的次数,k= 1, 2, ... ,10
输入样例:
11
输出样例:
1
4
1
1
1
1
1
1
1
1
解法如下:
num = int( input('请输入页码:') ) #如果在PTA中,不能有中文,且输入不能这么写,PTA中的输入格式如下:
'''
a = input()
num = int(a)
'''
page_list = [] #存放输入的页码分散成的数字
num_list = [] #存放各个数字出现的次数
for i in range(1,num+1):
page_list.append(i) #分散页数,将数字存入列表
page_list= str(page_list) #将列表字符串化,以便统计各个数字出现次数
for x in range(0,10):
num_list.append(page_list.count(str(x))) #用count方法统计已经字符化的数字出现的次数,并统计到num_list中
for result in num_list: #将统计好的数字输出
print(result)
实际上,上面的方法并没有用到什么算法的思想,为了简单,笔者直接用count()函数对转化为字符串的列表进行了数字统计。