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

Python数字位数统计结果为1而非全部,求问题原因及解决办法

问题分析

你的代码核心问题是**return count_no被放在了while循环内部**,第一次循环执行时,修改完num和count_no后就直接返回结果,导致只能统计1位,无法完成完整的位数遍历。

修正后的代码
class Solution(object):
    def calculate(self, num):
        # 处理数字为0的特殊情况
        if num == 0:
            return 1
        count_no = 0
        while num > 0:
            num = num // 10  # 用整数除法替代普通除法,避免浮点数问题
            count_no += 1
        return count_no  # 将return移到循环外部,确保循环完整执行

if __name__ == "__main__":
    p = Solution()
    no = 5675
    print(p.calculate(no))  # 输出4
补充说明
  • 把return语句移到while循环外,才能让循环持续执行到num变为0,此时count_no就是正确的位数。
  • 替换/为//做整数除法,避免num变成浮点数(比如5675/10会得到567.5,虽然后续循环也能执行,但整数除法逻辑更严谨)。
  • 增加了num=0的判断,因为0的位数是1,原代码会返回0,不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:35:18