为什么这个Python程序无法正确统计数字出现频率?
Python数字频率统计程序错误原因分析
问题复现代码
a = int(input()) digit = 0 count=0 temp = 0 for i in range(0,10): temp=a count = 0 while(temp>0): digit = temp%10 if digit == i: count+=1 temp=temp/10 if count>0: print(f'{i}\t{count}')
错误原因分析
- 核心问题是误用了Python 3的浮点数除法运算符
/:Python 3中/执行的是精确浮点数除法,运算结果为浮点类型。例如输入1991时,第一次执行temp=temp/10得到的结果是199.1,而非预期的整数199。 - 浮点数会导致后续取模结果无法匹配:当
temp变为浮点类型后,temp%10得到的结果也为浮点类型,比如199.1%10得到9.1,和循环变量i的整数类型永远无法相等,因此仅第一次循环时temp为初始整数,取模得到的最后一位整数可以匹配到对应i,其余位的统计全部失效。 - 额外存在死循环风险:浮点数除法不会让
temp精确等于0,理论上会进入无限循环,实际只有当temp小于Python浮点数精度阈值时才会退出,进一步破坏统计逻辑。
修复方法
将代码中的temp=temp/10修改为整数除法temp=temp//10即可,//运算符会舍去小数部分返回整数结果,保证后续取模得到的各位数字都是整数,可以正常完成频率统计。
内容的提问来源于stack exchange,提问作者user17095622
相关产品推荐
相关产品推荐

