Python:else ValueError :(在这种情况下特别是ValueError)

时间:2016-05-29 21:29:38

标签: python python-3.x if-statement while-loop try-except

我有一个与我的代码无关的问题。我只是好奇。为什么我(我不了解你)只能使用带有try和except循环的ValueError?例如:

print("What is 1 + 1?")
while(True):
    try:
        UserInput = int(input(("Your answer here:"))
        if(UserInput == 2):
            print("Congratulations you are correct!")
            break
        else:
            print("That is incorrect. Try again!")
    except ValueError:
        print("That is not a number. Try again!")

这完全正常(或至少它应该)但是,为什么(如果不是)下一段代码不起作用。

print("What is 1 + 1?")
while(True):
    UserInput = int(input("Your answer here:"))
    if(UserInput == 2):
        print("Congratulations you are correct!")
        break
    elif(UserInput != 2):
        print("That is incorrect. Try again!")
    else(ValueError):
        print("That is not a number. Try again!")

当我运行时,我收到此错误:

Traceback (most recent call last):
  File "python", line 9
    else(ValueError):
        ^
SyntaxError: invalid syntax

我知道这是因为ValueError仅适用于(我认为)try和except循环但是,为什么它不能在上面的场景中起作用?我认为他们会给出相同的结果但是,我不知道一切。也许你们其中一个非常聪明的人可以告诉我,我的工作或其他选择。感谢您试图向我澄清这一点:)。

2 个答案:

答案 0 :(得分:3)

第二个例子中的SyntaxError来自class DotBoss:UIViewController { func oneDotWasClicked(d:Dot) { } } 不需要条件的事实。第一个例子完全没问题。

更好的是,尽量缩短try-block:

else

答案 1 :(得分:2)

tryexcept是一种控制流程。从本质上讲,运行此代码意味着tryexcept如果发生异常(例如ValueError)则执行其他操作。

ifelse是另一种形式的控制流程。他们一起意味着if条件是真的,做某事; else,做点别的事。

发生异常不是一个条件,因此将elseValueError之类的异常一起使用是没有意义的。相反,您希望使用try / except块。