将字符串转换为int会导致程序崩溃

时间:2016-10-20 09:15:01

标签: python

我已经在我编写的数字猜谜游戏中运行了这个代码,如果玩家遵循指示,它运行得非常好,但我们都知道用户永远不会这样做。如果用户只输入一个空格或任何不是单词提示的字符串,那么当它尝试将guess的值转换为整数时,它会崩溃说int()的无效文字。有什么方法可以解决这个问题,还是我只能和崩溃一起生活?

while repeat==1:
    repeat=0
    level1number=str(level1number)
    guess=input("What is your guess? ")
    guess=guess.lower()
    if guess==level1number:
        print("Well done, You have guessed my number!")
    elif guess=="hint":
        print("Hints are not available until level 3")
        repeat=1
    elif guess!=level1number:
        print("Sorry that is not my number, you have lost a life. :(")
        lives=lives-1
        repeat=1
        if lives<=0:
            print("You have lost all your lives, so this means I win")
            print("The program will now end")
            exit()
            input("")
        level1number=int(level1number)
        guess=int(guess)
        if guess<level1number:
            print("The target number is higher")
        else:
            print("The target number is lower")

2 个答案:

答案 0 :(得分:2)

使用某些内容

if guess.isdigit() ...

(当且仅当给定字符串的所有字符都是数字时,方法isdigit()才返回true,即0到9)

答案 1 :(得分:0)

while repeat==1:
    repeat=0
    level1number=str(level1number)
    guess=input("What is your guess? ")
    guess=guess.lower()
    if guess==level1number:
        print("Well done, You have guessed my number!")
    elif guess=="hint":
        print("Hints are not available until level 3")
        repeat=1
    elif guess!=level1number:
        print("Sorry that is not my number, you have lost a life. :(")
        lives=lives-1
        repeat=1
        if lives<=0:
            print("You have lost all your lives, so this means I win")
            print("The program will now end")
            exit()
            input("")
        level1number=int(level1number)
        try:
            guess=int(guess)
            if guess<level1number:
                print("The target number is higher")
            else:
                print("The target number is lower")
        except:
            print("Try again. Not a number")

使用try/except块可以解决您的问题。看看

编辑:在问题中。你提到当输入数字以外的东西时你会收到错误。实际上,当你的代码试图将输入字符串转换为数字时,由于输入不是数字而导致输入字符串转换为数字时,会抛出exception,就像{guess = int(guess) {1}}。所以,我的代码所做的是,它捕获异常,并且不允许程序以异常终止。

试试一次。我知道你是初学者,但在编写越来越复杂的代码和应用程​​序之前,最好尽快了解space

希望它有所帮助!!