如何在Python猜数字程序中处理'done'输入以终止无限循环?
解决方法
你的代码里finished变量是程序启动时就获取的输入,没法在猜数字的过程中响应用户输入的“done”。要实现输入“done”就终止循环,调整逻辑如下:
import random # 别忘了导入random模块,原代码漏了这一步 a = int(input("Put in the lower number: ")) b = int(input("Put in the higher number: ")) number = random.randint(a, b) guessCache = -1 running = True while running: user_input = input('Guess: ') # 优先判断是否输入了终止指令 if user_input.strip().lower() == "done": print("游戏结束") running = False continue # 处理数字输入逻辑 try: guess = int(user_input) if guess == guessCache and guessCache != -1: print("Same") elif guess > number: print("Smaller") elif guess < number: print("Larger") elif guess == number: print("Congratulations! You found my number.") running = False guessCache = guess except ValueError: print("Not a number!")
关键调整说明:
- 每次先获取用户输入的原始字符串,优先判断是否为
done(strip()和lower()是为了兼容大小写、前后空格的输入,比如“ Done ”也能被识别) - 移除了原代码中无实际作用的
finished变量 - 捕获异常时指定
ValueError,避免无差别捕获所有异常(原代码的except:写法不够严谨) - 补充了
random模块的导入(原代码缺少这一步会直接报错)
内容的提问来源于stack exchange,提问作者Proxie
相关产品推荐
相关产品推荐

