You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python猜数字游戏无法判定胜利,误提示数值过高问题求助

猜数字游戏错误修复方案

你的问题出在数据类型不匹配和变量类型混乱,导致猜对数字时判断逻辑失效,错误触发高低提示。具体问题和修复如下:

核心错误点

  1. guessamount类型未统一:输入后仅在超过420时转为整数,否则保持字符串类型,后续赋值给answer后,answer的类型变成混合状态(可能是字符串或整数)。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:31:50