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

为何代码报错TypeError: '>'不支持NoneType与int比较?

解决TypeError: '>' not supported between instances of 'NoneType' and 'int'错误

核心错误原因

你写的guess函数里,guess = print(input("What is your first guess?"))这行有问题:print()函数的返回值永远是None,不管它输出什么内容,都不会返回有效数据。所以你把print的结果赋值给guess,最后返回的自然是None,这就是报错里NoneType的来源——当你用它和target()返回的整数比较时,就会触发类型错误。

代码修正步骤

  1. 修复guess函数
    先获取用户输入并转换成整数(输入默认是字符串,必须转成int才能和随机数比较),直接返回这个整数即可,不需要把print的结果赋值:

    def guess():
        # 获取输入并转为整数后返回
        return int(input("What is your first guess?"))
    

    如果需要打印用户的输入,可以单独加print语句,但别把它的返回值赋值给变量。

  2. 修复check函数的逻辑问题
    你现在在check里多次调用guess()和target():第一次比较调用一次,第二次又会调用一次。这会导致用户被要求输入两次,而且每次调用target()都会生成新的随机数,两次比较的目标值不一样,逻辑完全混乱。
    正确的做法是先调用一次两个函数,把结果存到变量里,再用变量做比较:

    def check(guess_func, target_func):
        user_guess = guess_func()
        secret_target = target_func()
        if user_guess > secret_target:
            print("Too high")
        elif user_guess < secret_target:
            print("Too low")
        else:
            print("You got it!")
    

完整修正后的代码

import random

def guess():
    return int(input("What is your first guess?"))

def target():
    return random.randint(1, 100)

def check(guess_func, target_func):
    user_guess = guess_func()
    secret_target = target_func()
    if user_guess > secret_target:
        print("Too high")
    elif user_guess < secret_target:
        print("Too low")
    else:
        print("You got it!")

check(guess, target)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:24:26