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

Python 3统计整数位数程序出现缩进错误,求解决建议

解决Python统计整数位数代码的缩进及其他问题

原代码存在的问题:

  • 缩进错误:if语句的缩进层级高于上一行的global count_e,Python要求同一代码块的缩进必须一致,这里if需与global保持相同缩进级别(建议用4个空格统一缩进)。
  • 变量名不统一:开头定义的是count=0.(还多了个无效的小数点),但函数内使用的是count_e,会导致变量未定义报错。
  • 递归逻辑错误:递归调用时误用全局变量N而非函数参数n,且用了普通除法/(会得到浮点数),无法正确触发终止条件,会导致无限递归。
  • 缺少递归终止条件:没有判断n缩小至0的情况,递归会一直执行直到栈溢出。
  • 负数处理不当:直接给计数器加1的逻辑错误,负号不属于数字位数,应先取绝对值再统计。

修正后的代码:

count_e = 0

def fun(n):
    global count_e
    # 处理负数,取绝对值
    n = abs(n)
    if n == 0:
        # 递归终止条件:n为0时停止调用
        return
    count_e += 1
    # 用整数除法缩小数值
    fun(n // 10)

N = int(input())
# 特殊处理输入0的情况(0的位数是1)
if N == 0:
    print(1)
else:
    fun(N)
    print(count_e)

修正说明:

  1. 统一变量名为count_e,初始化时去掉多余小数点,避免变量未定义或类型错误。
  2. 统一缩进格式,确保代码块层级清晰,符合Python语法规范。
  3. 添加递归终止条件,当n变为0时停止递归,避免栈溢出。
  4. 用abs(n)处理负数,保证统计的是数字本身的位数。
  5. 使用整数除法//替代普通除法/,确保每次递归时n都是整数,能正确缩小至0。
  6. 单独处理输入为0的场景,因为0的位数是1,避免递归后计数器为0的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:15:27