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

猜数字程序报错:'str'与'int'实例间不支持'>'运算符求助

解决猜数字程序中 '>' not supported between instances of 'str' and 'int' 错误

嘿,这个问题我之前踩过坑!核心原因特别直白:你从用户那里拿到的输入默认是字符串类型,但你直接把它和随机生成的整数number做大小比较了——Python可不会自动帮你做类型转换,所以就抛出这个报错啦。

具体问题出在哪

比如你代码里应该有类似这样的输入语句:

guess = input("Enter your guess: ")

这里的guess是字符串类型,而number是random.randint()生成的整数,用>或者<直接比较这俩不同类型的变量,Python肯定会罢工报错。

快速修复方案

把用户输入转换成整数就行,用int()函数包裹输入语句:

guess = int(input("Enter your guess: "))

更健壮的完整修正代码

另外我注意到你原代码还有几个小问题(比如函数里修改guesses不会影响外部变量、randint参数不全),给你补全并优化后的完整版本:

import random

def update_guess_count(guesses):
    return guesses + 1

def higher(guesses):
    print("Lower")
    return update_guess_count(guesses)

def lower(guesses):
    print("Higher")
    return update_guess_count(guesses)

def correct(guesses, number):
    print("You got it correct!")
    print(f"It was {number}")
    return update_guess_count(guesses)

def main():
    print("Welcome to guess the number")
    # 这里默认设置数字范围是1到100,你可以根据需求修改
    number = random.randint(1, 100)
    guesses = 0
    
    while True:
        try:
            # 关键:把用户输入的字符串转成整数
            guess = int(input("Enter your guess: "))
            guesses += 1
            
            if guess > number:
                guesses = higher(guesses)
            elif guess < number:
                guesses = lower(guesses)
            else:
                guesses = correct(guesses, number)
                break
        # 处理用户输入非数字的情况,避免程序崩溃
        except ValueError:
            print("Oops, please enter a valid whole number!")

if __name__ == "__main__":
    main()

额外的细节说明

  1. 原函数里的guesses +=1只是修改了函数内部的局部变量,不会改变主函数里的guesses值,所以改成让函数返回更新后的次数,再赋值给主函数的变量才能生效。
  2. 加了try-except块,防止用户输入字母、符号等非数字内容导致程序直接崩溃,交互更友好。
  3. 补全了random.randint()的第二个参数,这个函数必须传入两个整数来指定随机数的范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:45:32