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

Python计算器循环运行问题:布尔变量未定义引发NameError求助

解决你的计算器循环与NameError问题

嘿,看起来你踩了几个Python入门常见的小坑,咱们一步步来把问题捋清楚:

问题1:布尔值大小写写错了

Python里的布尔值是大小写敏感的,正确写法是True和False(首字母必须大写)。你写的while run == true里的true会被Python当成一个没定义过的变量,这就是第一个NameError的来源。

问题2:字符串没加引号

if input() == y和elif input() == n里的y、n没有被引号包裹,Python会把它们当作变量名,但你从来没定义过这两个变量,自然会触发NameError。得把它们写成字符串形式,比如'y'或者"y"。

问题3:重复调用input()的逻辑bug

你现在连续调用了两次input(),这意味着用户第一次输入后,如果不是'y',程序会再次弹出输入框让用户再输一次,完全不符合“只问一次是否继续”的预期。正确的做法是先把用户的输入存到一个变量里,再用这个变量做判断。


修正后的代码片段

# 先初始化run变量(建议放在循环开始前)
run = True
while run:  # 简化写法,run本身是布尔值,不用再写==True
    # 获取输入并转为小写,兼容用户输入Y/N的情况
    choice = input('Do you need another problem solved? y/n ').lower()
    if choice == 'y':
        # 这里放你的计算器运算逻辑
        print("继续计算啦!")
    elif choice == 'n':
        run = False
        print("计算器已退出~")
    else:
        print('Invalid input, please enter y/n')

额外小优化

  • 把while run == True简化成while run,代码更简洁直观;
  • 给input()的提示信息末尾加个空格,用户输入时视觉体验更好。

内容的提问来源于stack exchange,提问作者Gameing Wth Thanos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:04:03