我有一个和我的代码无关的问题,我只是好奇,为什么我(我不知道你)只能在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循环,但是,为什么它不能在上面的场景中工作呢?我假设他们会给予相同的结果,但是,我不知道所有的事情。也许你们中的一个聪明人可以告诉我我的不工作或者替代方案。谢谢你试图向我澄清这一点:)。
3条答案
按热度按时间svujldwt1#
第二个例子中的语法错误来自
else
不需要条件的事实,第一个例子完全可以。更好的是,尽量缩短try块:
jtw3ybtb2#
try
和except
是控制流的一种形式,本质上就是try
来运行这段代码,except
如果出现异常(比如ValueError
)做别的事情。if
和else
是控制流的另一种形式,合在一起表示if
条件为真,执行操作;else
,做点别的。发生的异常不是条件,因此将
else
用于ValueError
这样的异常是没有意义的,而应该使用try
/except
块。6pp0gazn3#
对于
else
,不需要也不允许任何条件,而且,您需要使用raise
来实现您想要的功能