如何检测变量是否大于或小于另一个变量?

时间:2014-10-20 21:41:43

标签: python variables python-3.x

我目前正在学习Python,我决定建立一个小小的"猜数字"游戏类型。我正在使用随机功能,并试图使其能够检测用户的输入是否等于随机数。这是我的代码:

irand = randrange(1, 10)
while True:
    number = input ("Pick a number 1-10: ")
    if number < irand:
        print ("    ")
        print ("That's too high, try again.")
    if number > irand:
        print ("    ")
        print ("That's too low, try again.")
    if number == irand:
        print ("    ")
        print ("You got it right! You won!")
        break

我不确定如何检测number是否等于,小于或大于irand。有帮助吗?谢谢! :)

2 个答案:

答案 0 :(得分:6)

检查“等于,小于或大于”的代码是正确的,但您在代码中遇到之前的问题。

在Python(3.0及更高版本)中,input返回一个字符串。因此,您要将number(一个字符串)与irand(一个数字)进行比较。有些语言可能会自动转换为一种方式,但这可能令人困惑,*,因此Python拒绝这样做,而是引发TypeError: unorderable types: int() < str()

解决方案是将输入解析为数字,如下所示:

number = int(number)

如果用户提供无效输入,则会引发ValueError,如字母c而不是1到10之间的数字。如果您想要更好地处理,请使用try声明。

作为旁注,您可能需要elif而不是if。如果你把一切都搞定了,这没有任何区别,但如果你犯了一个错误,那就有助于发现错误。

所以,把它们放在一起:

while True:
    number = input("Pick a number 1-10: ")
    try:
        number = int(number)
    except ValueError:
        print(number, 'is not a number, try again.')
        continue
    if number < irand:
        print("    ")
        print("That's too high, try again.")
    elif number > irand:
        print("    ")
        print("That's too low, try again.")
    else:
        print("    ")
        print("You got it right! You won!")
        break

(请注意,我在continue子句中使用了except,因此我们跳过循环的其余部分,不必担心number不再是一个数字。我们还可以将整个循环移动到else上的try原因,或者对每个isinstance等添加if检查,但这有点笨拙。 )


*考虑将字符串"2"与数字10进行比较。将字符串转换为数字的语言将表示2 < 10;将数字转换为字符串的语言将表示"10" < "2"。没有一个是“正确”或“错误”,但两者都是一半的时间令人惊讶......

答案 1 :(得分:-1)

您可以使用以下代码:

while True:
    number = input("Pick a number 1-10: ")
    try:
        number = int(number)
    except ValueError:
        print(number, 'is not a number, try again.')
        continue
    if number > 10:
        print("    ")
        print("That's too high, try again.")
    elif number < 1:
        print("    ")
        print("That's too low, try again.")
    else:
        print("    ")
        print("You got it right! You won!")
        break