如何让变量检测它是否大于或小于另一个变量?
我现在正在学习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
不是数字的问题了。我们也可以把整个循环放到try
的else
部分,或者在每个if
中加一个isinstance
检查等等,但那样会显得有点繁琐。)
* 想象一下把字符串"2"
和数字10
进行比较。一种会把字符串转换成数字的语言会说2 < 10
;而另一种把数字转换成字符串的语言会说"10" < "2"
。这两种情况都没有“对”或“错”,但大部分时间都会让人感到意外……