如果输入与y或n不同,则应调用异常。我原以为这是一项非常简单的任务,但它失败了。如果输入不是y或n,则根本不执行任何操作。我在这里错过了什么?
rep = str(input('type Y or N: '))
try:
if rep.lower() == 'y':
print('Y was typed')
if rep.lower() == 'n':
print('N was typed')
except:
print ('Neither N nor Y was typed')
我对代码有两条评论:
-
首先,不需要使用str((显式强制转换输入变量,因为默认情况下input((函数返回一个字符串,这意味着即使您输入rep=1,该值也将是一个字符串。
-
您的代码不会像上面的人提到的那样生成异常,因为您插入的任何输入都将被视为字符串。话虽如此,甚至没有必要尝试。。。捕获块,这意味着只有正常的"捕获块";如果…elif…else"梯子会起作用的。
您的代码不会引发在这种情况下可以捕获的异常。使用if
-elif
-else
:而不是使用try
-except
rep = str(input('type Y or N: '))
if rep.lower() == 'y':
print('Y was typed')
elif rep.lower() == 'n':
print('N was typed')
else:
print('Neither N nor Y was typed')
此代码只是针对两种不同的情况(if
分支和elif
分支(检查rep
。如果和都不是True
,则代码进入else
分支。
在本文档中阅读有关此类if
语句如何工作的更多信息。
在这种情况下,您不需要try/except
,因为不会引发异常:
rep = input('type Y or N: ')
rep_lower = rep.lower()
if rep_lower == 'y':
print('Y was typed')
elif rep_lower == 'n':
print('N was typed')
else:
print ('Neither N nor Y was typed')