Python双人猜数字游戏代码求助:猜中仍判定玩家一获胜
修复双人猜数字游戏的bug并优化代码
修改后的代码
def Game(): number_to_guess = 0 number_of_guesses = 0 # 玩家一输入数字,验证范围1-10 while True: try: number_to_guess = int(input("Player One enter your chosen number: ")) if 1 <= number_to_guess <= 10: break print("Not a valid choice, please enter a number between 1 and 10.") except ValueError: print("Invalid input! Please enter an integer.") # 玩家二猜测环节 while number_of_guesses < 5: try: guess = int(input(f"Player Two, you have {5 - number_of_guesses} guesses left. Enter your guess: ")) if not (1 <= guess <= 10): print("Please enter a number between 1 and 10.") continue number_of_guesses += 1 if guess == number_to_guess: print("Player Two wins!") return elif guess < number_to_guess: print("Too low! Try a higher number.") else: print("Too high! Try a lower number.") except ValueError: print("Invalid input! Please enter an integer.") # 用完所有猜测机会 print(f"Player One wins! The number was {number_to_guess}.") Game()
关键修改点
- 输入错误防护:新增
try-except块处理非整数输入的异常,同时验证玩家二的猜测是否在1-10范围内,避免程序因无效输入崩溃 - 游戏体验优化:每次猜测后给出明确的高低提示,让玩家二有调整方向
- 逻辑简化:玩家二猜中数字时直接返回并宣告胜利,避免多余判断;循环只检查剩余猜测次数,逻辑更清晰
- 代码可读性提升:用下划线分隔的变量名(如
number_to_guess)符合Python编码规范,更易维护
关于你提到的“猜中仍判定玩家一赢”的bug
原代码逻辑本身在猜中时会正确判定玩家二胜利,可能的触发原因包括:
- 测试时输入非整数导致程序异常中断,没执行到胜利判断
- 输入验证环节未覆盖非整数场景,引发报错后跳过了结果判定
- 视觉误判混淆了输出内容
修改后的代码通过输入验证和即时胜利返回的逻辑,彻底杜绝了这类误判的可能。
内容的提问来源于stack exchange,提问作者King Ekems
相关产品推荐
相关产品推荐

