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

-2 投票
2 回答
23745 浏览
提问于 2025-04-28 15:59

我现在正在学习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 个回答

-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
6

你的代码用来检查“等于、小于或大于”的部分是对的,但在代码的前面有个问题。

在Python(3.0及以后版本)中,input这个函数返回的是一个字符串。所以,你在比较number(一个字符串)和irand(一个数字)。有些编程语言可能会自动转换类型,但这样会让人困惑,所以Python不这样做,反而会报错,提示TypeError: unorderable types: int() < str()

解决办法是把输入的内容转换成数字,像这样:

number = int(number)

如果用户输入了无效的内容,比如字母c而不是1到10之间的数字,这会引发一个ValueError错误。如果你想更好地处理这种情况,可以使用try语句。

顺便提一下,你可能想用elif而不是if。如果你所有的逻辑都对,这两者没有区别,但如果你犯了错误,elif可以帮助你更快发现问题。

所以,把这些放在一起:

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

(注意我在except部分用了continue,这样我们就跳过了循环的其余部分,不用再担心number不是数字的问题了。我们也可以把整个循环放到tryelse部分,或者在每个if中加一个isinstance检查等等,但那样会显得有点繁琐。)


* 想象一下把字符串"2"和数字10进行比较。一种会把字符串转换成数字的语言会说2 < 10;而另一种把数字转换成字符串的语言会说"10" < "2"。这两种情况都没有“对”或“错”,但大部分时间都会让人感到意外……

撰写回答