今天用python算法写了一个:
给出一本书的页数,计算页码数字中(0-9)出现的次数
结果让我很意外,(抓狂!)
python版本是3.6.3 编译器是jeany
这是代码
#coding=gbk 让python中可以写入中文注释和输出
number = int(input("输入你想创建的页码数:"))
count = [0]*10 #记录(0-9)数字出现次数的数组
Sum = 0 #计算while循环次数
for n in range(1,number+1): #每个页码 分析一次
flag = [0]*10 #标记 保证在一次页码中同一个数字不重复计数
while(n):
Sum += 1#循环一次 Sum加一
i = int(n % 10) #分解出页码中的数字
n = n/10
if flag[i] != 1:
count[i] += 1
flag[i] = 1
for i in range(10):
print("数字---使用次数")
print('%d %d' %(i,count[i]))
print(str(Sum))
结果如上图
我输入的页码数是1
那么页码数字就只有1
所以for循环时一次 对1进行数字分析
while的循环 中 n = n/10 那么 按照常理 n = 0
while循环一次 退出
而while却循环了324次 懵!!!
分析看看 while循环没出来 那么n到底经历了什么
while(n):
---snip——
n /= 10
print(n) #我们来看看n到底经历了什么
——snip---
# ~ for i in range(10):
# ~ print("数字---使用次数")
# ~ print('%d %d' %(i,count[i]))
print('while循环次数' + str(Sum))
我将输出计数的部分注释掉
原来是 浮点!
然后我试了一下
print('2/3 = ' + str(2/3))
a = 2
b = 3
print('a=2,b=3 \t a/b = ' + str(a/b))
c = int(2)
d = int(3)
print('c/d = ' + str(c/d))
print('int(c/d) = ' + str(int(c/d)) )
结果
在这个情况下
python中的两个不能整除的两个整型相除 得到的会是浮点型