我正在写一个简单的猜测数字'游戏并希望程序在继续将其与生成的数字进行比较之前检查给定的输入是否为整数。这是代码:
import random
def guessFunc():
try:
guess1 = int(input())
return guess1
except ValueError:
print('Input an integer!')
guessFunc()
secretNumber = random.randint(1,20)
for guessTaken in range(1,7):
print('Guess a number. You have ' + str(7 - guessTaken) + ' guesses left.')
guess = guessFunc()
if guess < secretNumber:
print('Too low')
elif guess > secretNumber:
print('Too high')
else:
break
if guess == secretNumber:
print('You got it! You took ' + str(guessTaken) + ' guesses.')
else:
print('The number is ' + str(secretNumber))
当我测试程序时,如果我总是输入一个整数,程序将按预期运行。如果我输入任何其他东西(例如一个字符串),它会发送一条消息,询问一个整数,这也是预期的。但是,如果我输入一个整数,程序会导致错误如下:
如果猜测&lt; secretNumber:
TypeError:unorderable类型:NoneType()&lt; INT()
我不明白函数输出None值的原因。它只发生在我第一次输入一个字符串后跟一个整数时。
另外,在这种情况下,是否有更简洁/更整洁的方法来编写代码以检查输入是否为整数?
答案 0 :(得分:3)
第9行guessFunc()
中的'递归'调用未被返回,只是被调用。如果您将其更改为return guessFunc()
则可以。
关于检查整数的问题,你的方式实际上是一种非常Pythonic的方式。您可以假设它是一个整数,并在出现问题时处理异常,而不是检查输入是否为整数,只有在出现问题时才需要时间。