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

Python新手求助:猜数字代码出现TypeError类型错误无法运行

解决你的猜数字游戏代码问题

嘿,刚看到你的问题,这个错误其实很典型,咱们一步步来理清楚:

错误原因分析

你遇到的 TypeError: '<' not supported between instances of 'int' and 'str',是因为你把整数类型的猜测值和**字符串'number'**做了大小比较——这两种类型根本没法直接对比嘛!

看你的代码逻辑,你本来应该拿用户输入的guess和随机生成的神秘数字x做比较,但你错误地写成了和字符串'number'对比,这就直接触发了类型不匹配的错误。

修正后的完整代码

我帮你把问题点都修正了,还加了注释说明改动的地方:

import random
import math

# 定义上下限
lower = 1
upper = 100
# 生成随机目标数字
x = random.randint(lower, upper)
# 计算最大允许猜测次数,转成整数避免浮点数问题
max_guesses = round(math.log(upper - lower + 1, 2))
print(f"\n\tYou've only {max_guesses} chances to guess the integer!\n")

# 初始化猜测次数
count = 0

# 循环直到用完次数或者猜对
while count < max_guesses:
    count += 1
    # 获取用户输入并转成整数,同时处理无效输入
    try:
        guess = int(input("Guess a number:- "))
    except ValueError:
        print("请输入有效的整数哦!")
        count -= 1  # 输入无效不算一次猜测机会
        continue

    # 和目标数字x比较(这里是核心修改!)
    if guess == x:
        print(f'Congratulations! You guessed it in {count} tries!')
        break  # 猜对了就跳出循环,不用继续猜了
    elif guess < x:
        print("You guessed too small!")
    else:
        print("You guessed too big!")

# 如果用完了所有次数还没猜对
else:
    print(f"\nThe number is {x}")
    print("\tBetter Luck Next time!")

主要改动点

  • 把所有对比的'number'换成了真正的目标数字x,这是解决类型错误的核心
  • 把max_guesses提前计算并转成整数,避免循环条件里的浮点数比较问题
  • 加了try-except处理用户输入非整数的情况,让程序更健壮
  • 猜对后用break跳出循环,不用继续消耗次数
  • 用while-else结构替代原来的单独if判断,逻辑更清晰

这样修改后,代码就能正常运行啦😉

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:08:12