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

编写数字逐位输出程序时遭遇NameError问题求助

问题分析与解决

错误原因

你的while(n!=0):循环没有缩进,不在print_digits函数的代码块内,导致它在全局作用域执行。此时全局作用域里未定义变量n,所以触发NameError报错。

修复后的代码

将while循环缩进,放入print_digits函数内部即可解决问题:

def print_digits(n):
    l1 = 1
    l2 = 1

    while(n!=0):
        l1 = n%10
        print(l1)
        
        l2 = int(n/10)
        n = l2
    
def main():
    n=int(input())
    print_digits(n)
    
main()

额外优化建议

  • 变量l1和l2无需提前初始化,直接在循环内处理更简洁,同时用Python的整数除法//替代int(n/10),风格更统一:
def print_digits(n):
    while n != 0:
        print(n % 10)
        n = n // 10

def main():
    n = int(input())
    print_digits(n)
    
main()
  • 若输入n=0,当前代码不会输出任何内容,可根据需求添加对应处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:57:25