# start of number game.
import random
guessesTaken = 0
guessesLeft = 6
def numberGuess():
guessesTaken = 0
guessesLeft = 6
number = random.randint(1, 10)
print('I am thinking of a number between 1 and 10.' + "\n" + 'Can you guess the number?')
print('You have 6 guesses.')
while guessesTaken < 6:
guess = input("Your guess:")
try:
guess = int(guess)
except ValueError:
print("That's not a number stupid")
guessesTaken = guessesTaken + 1
guessesLeft = guessesLeft - 1
if guess < number:
print('Your guess is too low.')
if guess > number and guess <= 10:
print('Your guess is too high.')
if guess > 10:
print('Please use a number 1-10.')
if guessesLeft <= 5 and guessesLeft != 0 and guess != number:
print ('You have ' + str(guessesLeft) + ' guesses left.')
if guess == number:
break
if guess == number:
guessesTaken = str(guessesTaken)
print('Good job! You guessed my number in ' + guessesTaken + ' guesses!' + "\n" + "\n" + 'Lets play again!')
numberGuess()
if guess != number:
number = str(number)
print('Nope. ' + number + ' was the number I was thinking of.' + "\n" + "\n" + 'Lets play again!')
numberGuess()
猜数字()
所以基本上它在trinket.io中完全正常(你可以在这里看到; http://sobieski.codes/guess/)
但出于某种原因,如果我在其中运行空闲IDE或我的Ubuntu服务器(运行3.4),我会收到此错误。
Your guess:a
That's not a number stupid
Traceback (most recent call last):
File "loopgame.py", line 49, in <module>
numberGuess()
File "loopgame.py", line 48, in numberGuess
numberGuess()
File "loopgame.py", line 43, in numberGuess
numberGuess()
File "loopgame.py", line 25, in numberGuess
if guess < number:
TypeError: unorderable types: str() < int()
正如你所看到的,它正确地确定它不是一个数字,但仍然给我一个追溯,你能帮助我理解为什么吗?
NameError: name 'a' is not defined
IDLE ide错误。
答案 0 :(得分:0)
我认为比较string
和int
会在python 3.4中引发TypeError
而不是ValueError
,但是在python 2.7中会引发ValueError
,你应该添加多个try except
部分来处理这些例外。
答案 1 :(得分:0)
没有完成处理除外,只需要添加继续,以便它知道继续捕获并打印错误。 IDLE ide是因为2.7和3.5不能很好地混合,将空闲ide升级到3.5并且它可以正常运行。