如何让猜数字游戏输入no时直接结束,避免回到顶部循环或报错?
猜数字游戏功能优化方案
我帮你调整了代码逻辑,完美实现你要的需求:输入no直接结束游戏,输入yes重新开始,不会出现错误也不会无效循环。下面是修改后的完整代码,还加了注释方便你理解:
import random def main(): while True: # 用无限循环替代固定次数循环,灵活控制游戏流程 play_guessingGame_() # 游戏结束后询问是否继续,同时处理无效输入 while True: play_again = input("Do you want to play again? (yes/no): ").strip().lower() if play_again in ["yes", "no"]: break print("Please enter 'yes' or 'no' to continue.") if play_again == "no": print("Thanks for playing! Goodbye!") break # 退出主循环,程序干净结束 def play_guessingGame_(): guessesTaken = 0 print('Hello Friend,') print('What is your name?') name = input().strip() print(f'{name}, It is good to meet you!') # 补全猜数字核心逻辑(你之前的代码没写完这部分) number = random.randint(1, 20) print(f'Well, {name}, I am thinking of a number between 1 and 20.') while guessesTaken < 6: print('Take a guess.') guess = input() try: guess = int(guess) except ValueError: print('Please enter a valid number!') continue guessesTaken += 1 if guess < number: print('Your guess is too low.') elif guess > number: print('Your guess is too high.') else: break # 猜对了,退出猜数字循环 # 游戏结果反馈 if guess == number: print(f'Good job, {name}! You guessed my number in {guessesTaken} guesses!') else: print(f'Nope. The number I was thinking of was {number}.') if __name__ == "__main__": main()
关键修改点说明:
- 把原来固定次数的
for循环改成while True无限循环,让游戏可以重复进行直到用户主动退出 - 增加了输入验证逻辑,确保用户只能输入
yes或no,避免无效输入导致的程序异常 - 当用户输入
no时,通过break直接退出主循环,程序干净结束;输入yes则回到循环顶部,重新开始一轮游戏 - 补全了猜数字游戏的核心逻辑,确保整个游戏可以正常运行
内容的提问来源于stack exchange,提问作者Alysia Sturges
相关产品推荐
相关产品推荐

