You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么这个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:45:06