写个程序,数下从0-10000有多少个0?

写了一点不会写了.这个没法数2500这种好几个0的

s=[]
for x in range(10000):
    if '0' in str(x):
        s.append(x)
len(s)
阅读 6.4k
9 个回答

不知道您说的是不是这个意思?


# -*- coding:utf-8 -*-
counter = 0
for x in range(10001):
    for i in str(x):
        if i == '0':
            counter += 1
        else:
            pass
print(counter)

2894

请使用python3运行:

# -*- coding:utf-8 -*-
num = 0 #统计出现的0
i = 0
while(i <= 10000):
    num += str(i).count('0')
    i += 1
print(num)
输出为: 2894
print(sum(map(lambda x: str(x).count('0'), range(10000 + 1))))

不会用手机写代码?

  • 个位数1个
  • 十位数9个
  • 百位数
  1. 两个0的情况:2✘9=18个
  2. 1个0的情况,个位为0或十位为0各有9✘9种:共81✘2=162个
  • 千位数
  1. 3个0的情况:9✘3=27个
  2. 2个0的情况:共3(C3,2)种组合,每种9✘9=81个,总共243✘2=486个
  3. 1个0的情况:9✘9✘9✘3=2187个
  • 万位数
  1. 4个

共1+9+18+162+27+486+2187+4=2894

你看这样行不?

str([x for x in range(10001)]).count('0')

心算出来1001+(1001-10)+(1001-100)+(1001-1000)=2894,分别是个位、十伟、百位、千位出现0的数次。

sum([str(a).count("0") for a in range(10000+1)])
2894

一个比较简单的方法:如果一个数字对 10 取余没有余数,那这个数末尾肯定有一个 0,那依次判断这个数的每一位就好了

count = 0;
for i in range(0, 10001):
    count += int(str(i).count('0'));
print(count);

python 的字符串自己有count方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题