如何解决Python编写Mastermind游戏菜单时出现的无限循环问题
问题原因
你的无限循环是由两个点共同导致的:
- 循环触发条件
while ans的判断规则是:只要ans的值属于Python的「真值」就会继续执行循环。你后续把ans赋值为用户输入的字符串,只要用户输入的不是空字符串,ans就永远是真值,循环不会停止 - 你没有给退出选项
q编写对应逻辑,就算用户输入了q,也没有触发终止循环的操作
修复方案
你只需要补充q选项的分支,在用户输入q的时候把ans赋值为False,或者直接跳出循环即可,参考修改后的代码:
ans = True while ans: print("你需要执行什么操作?") print(""" r 注册新用户 s 显示得分榜 p 开始游戏 q 退出 """) ans = input("请输入对应选项:") if ans == "r": player_1 = input("请输入新用户的名称:") print("欢迎", player_1, "!") elif ans == "s": # 后续补充显示得分榜的逻辑 print("得分榜功能开发中") elif ans == "p": # 后续补充游戏逻辑 print("游戏功能开发中") elif ans == "q": print("即将退出游戏") ans = False # 也可以直接用break终止循环,效果一致 else: print("输入的选项无效,请重新输入")
额外优化建议
- 可以把输入内容统一转成小写、去除首尾空格,避免用户输入大写R/Q、多打空格时识别失败:
ans = input("请输入对应选项:").strip().lower() - 注册用户的逻辑建议用列表存储所有用户,不要只定义
player_1单个变量,避免后续多用户注册时旧数据被覆盖
内容的提问来源于stack exchange,提问作者Dulanjana Gamage
相关产品推荐
相关产品推荐

