原题是判断0-9999这一万个数中包含几个7,不是说含7的数有几个。
他们思路是个位是7不变,十百千位从0-999共1000个,同理十百千亦一样,故可得共有4000个。
我是通过遍历每个数中包含几个x,然后相加即可得最后的总数。
def caculate():
'''
判断0-n中有多少个x,不是多少个数中有x
x指的是(0-9)之间的数
'''
print('请输入一个数n:',end='')
n = int(input())
print('请输入一个数x:',end='')
x = input()
counts = []
sum = 0
for i in range(n + 1):
s = str(i)
per_times = s.count(x) # 计算每个数中x出现的次数
counts.append(per_times)
for j in counts:
k = int(j)
sum += k
return sum,x
if __name__ == "__main__":
result,x = caculate()
print('共有%d个%s' %(result,x))
结果如下