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

Python统计输入数字位数异常:输入两位数输出325求排查

为什么统计数字位数时输入两位数会输出325?

哈哈,这个问题我刚学Python的时候也踩过一模一样的坑!咱们来一步步拆解你的代码问题出在哪:

首先看你循环里的核心代码:countnumber = countnumber/10——这里用的是普通除法/,在Python里它会把整数转换成浮点数返回,这就是导致奇怪输出的根源!

举个输入10的例子:

  • 第一次循环:countnumber从10变成10/10=1.0(浮点数),digitcount变成1
  • 第二次循环:countnumber变成1.0/10=0.1,digitcount变成2
  • 这时候你以为循环该停了?但0.1是大于0的,循环会继续执行!接下来countnumber会变成0.01、0.001……直到这个浮点数小到超出双精度浮点数的表示范围,被自动处理成0的时候,循环才会终止。这个过程一共会执行325次,所以你看到输出325。

怎么修复?

把普通除法换成整数除法//,它会直接舍去小数部分,返回整数结果,这样循环就会在countnumber变成0的时候及时停止:

inputnumber = int(input())
countnumber = inputnumber
digitcount = 0
while countnumber > 0:
    digitcount += 1
    countnumber = countnumber // 10  # 用整数除法替代普通除法
print(digitcount)

额外小技巧

其实还有更简单的方式,把数字转成字符串直接统计长度:

inputnumber = int(input())
print(len(str(inputnumber)))

不过要注意,如果输入是0的话,你的原代码会输出0(因为循环不执行),而转字符串的方法会输出1,根据你的需求选择就行~

内容的提问来源于stack exchange,提问作者Naya Keto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:17:46