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
相关产品推荐
相关产品推荐

