如何根据输入的尝试次数控制Python猜数字游戏的循环次数
猜数字游戏自定义尝试次数实现方案
核心实现思路
- 在生成随机数后新增剩余次数变量,初始值等于玩家输入的自定义尝试次数
- 玩家每完成1次有效猜测(输入合法且在规定范围内),剩余次数自动减1
- 剩余次数为0时直接判定玩家本局失败,结束本轮游戏
- 同步修复原代码的逻辑漏洞:非数字输入的异常捕获、调整判断顺序避免死循环、将重玩逻辑移到每轮胜负判定之后
修改后可直接运行的完整代码
from random import randint from time import sleep as wait while True: # 玩家设置游戏参数阶段 while True: try: # 玩家选择随机数范围 range_ = int(input("请输入随机数的最大值(比如输入50,随机数范围就是1-50):")) if range_ == 0: print("\n不能设置为0\n") continue if range_ == 1: print("\n范围不能设置为1,没有猜测意义\n") continue if range_ < 0: print("\n不能设置负数范围\n") continue # 玩家自定义尝试次数 tries = int(input("请输入你想要的可尝试次数:")) if tries == 0: print("\n尝试次数不能设置为0\n") continue if tries < 0: print("\n尝试次数不能是负数\n") continue break except ValueError: print("\n请输入合法整数\n") continue # 生成随机答案 ai = randint(1, range_) remaining_tries = tries win = False # 猜数字阶段 while remaining_tries > 0: print(f"\n剩余可用次数:{remaining_tries}") try: player = int(input("请输入你猜的数字:")) except ValueError: print("请输入整数!") continue if player > range_ or player < 1: print(f"请输入1到{range_}范围内的数字") continue if player < ai: print("再大一点!") remaining_tries -= 1 elif player > ai: print("再小一点!") remaining_tries -= 1 else: print("恭喜你猜对了!你赢了!") win = True break # 次数耗尽判断 if not win: print(f"\n你的次数已经用完啦!正确答案是{ai},本局你输了。") # 重玩询问 again = input("\n是否要再玩一局?(yes/no):").lower() if again != "yes": print("再见!") wait(3) break
关键修改点说明
- 新增了剩余次数计数逻辑,严格按照玩家输入的数值作为猜测次数上限,次数耗尽直接结束本局
- 补充了猜数字输入的异常捕获,避免用户输入非数字内容时程序直接崩溃
- 调整了判断顺序,猜对或次数耗尽后直接触发胜负判定,不会进入死循环
- 把重玩询问统一放在每轮游戏结束后,逻辑更清晰不会被前面的跳转语句跳过
内容的提问来源于stack exchange,提问作者NumericalMouse
相关产品推荐
相关产品推荐

