猜数字程序报错:'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()
额外的细节说明
- 原函数里的
guesses +=1只是修改了函数内部的局部变量,不会改变主函数里的guesses值,所以改成让函数返回更新后的次数,再赋值给主函数的变量才能生效。 - 加了
try-except块,防止用户输入字母、符号等非数字内容导致程序直接崩溃,交互更友好。 - 补全了
random.randint()的第二个参数,这个函数必须传入两个整数来指定随机数的范围。
内容的提问来源于stack exchange,提问作者Ethan Buckley
相关产品推荐
相关产品推荐

