数字猜谜程序循环异常:无法回到玩家1猜数环节求修复
问题修复:数字猜谜程序循环异常
问题根源
原代码采用两个独立while循环,逻辑完全偏离需求:第一个循环仅等待玩家1猜对,期间玩家2的猜测不会被验证是否正确;第一个循环结束后才进入第二个循环处理玩家2的猜测,直接导致流程卡死在玩家2的输入环节。此外还存在细节错误:玩家1猜数时,错误对比了玩家2的数字来判断高低,而非自己的目标数。
修复后的代码
import random # 生成两位玩家的随机目标数 player_one_target = random.randrange(1, 100) player_two_target = random.randrange(1, 100) print("\nGuess your numbers\n") game_running = True while game_running: # 玩家1回合 print("Player 1, try to guess your number:") guess_one = int(input()) if guess_one == player_one_target: print("Correct! That was your number.\n") game_running = False else: print("Incorrect!") print("Too high\n" if guess_one > player_one_target else "Too low\n") # 若玩家1已猜对,跳过玩家2回合直接结束 if not game_running: break # 玩家2回合 print("Player 2, try to guess your number:") guess_two = int(input()) if guess_two == player_two_target: print("Correct! That was your number.\n") game_running = False else: print("Incorrect!") print("Too high\n" if guess_two > player_two_target else "Too low\n") # 游戏结束后公布双方目标数 print("Player One's number was:", player_one_target) print("Player Two's number was:", player_two_target)
修复说明
- 用单个主循环+
game_running标志控制整体流程,实现「轮流猜测、猜对即停」的核心逻辑 - 每轮先处理玩家1的猜测,验证正确则立即终止游戏;错误则给出对应高低提示
- 玩家1未猜对时,切换到玩家2的回合,同样执行验证与提示逻辑
- 修正了高低判断的对比对象,确保每个玩家对比自己的目标数字
- 简化输出语句,让提示信息更简洁直观
内容的提问来源于stack exchange,提问作者Jams
相关产品推荐
相关产品推荐

