Traceback(最近一次调用最后一次):(在trinket.io中工作但不在3.4 / 2.7.11中)

时间:2016-02-26 20:59:15

标签: python python-2.7 python-3.x exception-handling

    # 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错误。

2 个答案:

答案 0 :(得分:0)

我认为比较stringint会在python 3.4中引发TypeError而不是ValueError,但是在python 2.7中会引发ValueError,你应该添加多个try except部分来处理这些例外。

答案 1 :(得分:0)

没有完成处理除外,只需要添加继续,以便它知道继续捕获并打印错误。 IDLE ide是因为2.7和3.5不能很好地混合,将空闲ide升级到3.5并且它可以正常运行。