TypeError: unorderable types: int() > str()

TypeError: unorderable types: int() > str()

目标:与第一个项目类似,这个项目也使用了Python中的random模块。该程序将首先随机生成一个用户未知的数字。用户需要猜测该数字是多少。 (换句话说,用户需要能够输入信息。)如果用户的猜测是错误的,程序应该 return 某种关于错误程度的指示(例如数字太高或太低) .如果用户猜对了,就会出现一个肯定的指示。您将需要函数来检查用户输入的是否为实际数字,查看输入的数字与随机生成的数字之间的差异,然后比较数字。

这就是我所做的,但我不知道如何解决它:

在python3中,inputreturns一个字符串。您将此字符串直接传递给您的函数,并与从 random.choice 获得的整数进行比较。这是发生了什么:

In [535]: '1' > 2
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-535-6857a5c3feea> in <module>()
----> 1 '1' > 2

TypeError: unorderable types: str() > int()

结论:ints 和 strings 没有可比性。您需要通过调用 int 函数来转换输入。

your_guess = int(input(...)) 

然后,它应该工作:

In [536]: 1 > 2
Out[536]: False

但是,这只能解决一个问题。每次你调用你的函数时,number 每次都会用一个新值重新初始化,所以如果你猜测一个数字并再次调用该函数,你下次会猜测一个完全不同的随机数。您需要在函数 numbers 外部 设置 然后 调用函数,将猜测和随机数作为参数传递。