编写数字逐位输出程序时遭遇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
相关产品推荐
相关产品推荐

