Python猜数字游戏无法判定胜利,误提示数值过高问题求助
猜数字游戏错误修复方案
你的问题出在数据类型不匹配和变量类型混乱,导致猜对数字时判断逻辑失效,错误触发高低提示。具体问题和修复如下:
核心错误点
guessamount类型未统一:输入后仅在超过420时转为整数,否则保持字符串类型,后续赋值给answer后,answer的类型变成混合状态(可能是字符串或整数)。answer类型混乱:初始是getpass获取的字符串,后续判断后直接赋值为guessamount,导致answer可能是字符串,和int(guess)比较时因类型不同,answer == int(guess)永远不成立,直接进入else分支执行高低提示。
修复后的代码
from random import randint import getpass # 统一转换为整数,处理范围限制 guessamount = int(input("How large do you want the range of numbers to pick be?(Limit is 420): ")) if guessamount >= 420: guessamount = 420 # 获取答案并转换为整数,处理范围限制 answer = int(getpass.getpass("Player 1 select the answer (The answer will not show up while typing):")) if answer >= guessamount: answer = guessamount attempts = 5 while attempts > 0: guess = int(input(f"Guess a number between 1-{guessamount}: ")) if guess == answer: print(f"You won the game! The answer was {answer}") attempts = 0 else: attempts -= 1 if guess > answer: print(f"You suck at this game. The answer is lower than {guess}") else: print(f"You suck at this game. The answer is higher than {guess}") if attempts == 0 and guess != answer: print(f"You ran out of attempts. The number was {answer}")
修复说明
- 所有输入的数值都直接转换为整数,彻底避免类型不匹配的比较错误。
- 猜对时直接打印胜利提示,无需依赖循环外的判断,逻辑更清晰。
- 使用f-string简化字符串拼接,代码更简洁易读。
内容的提问来源于stack exchange,提问作者Possible Panda
相关产品推荐
相关产品推荐

