我有一个与我的代码无关的问题。我只是好奇。为什么我(我不了解你)只能使用带有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循环但是,为什么它不能在上面的场景中起作用?我认为他们会给出相同的结果但是,我不知道一切。也许你们其中一个非常聪明的人可以告诉我,我的工作或其他选择。感谢您试图向我澄清这一点:)。
答案 0 :(得分:3)
第二个例子中的SyntaxError来自class DotBoss:UIViewController
{
func oneDotWasClicked(d:Dot)
{
}
}
不需要条件的事实。第一个例子完全没问题。
更好的是,尽量缩短try-block:
else
答案 1 :(得分:2)
try
和except
是一种控制流程。从本质上讲,运行此代码意味着try
,except
如果发生异常(例如ValueError
)则执行其他操作。
if
和else
是另一种形式的控制流程。他们一起意味着if
条件是真的,做某事; else
,做点别的事。
发生异常不是一个条件,因此将else
与ValueError
之类的异常一起使用是没有意义的。相反,您希望使用try
/ except
块。