2 回答

TA贡献1963条经验 获得超6个赞
sex == "M" or sex == "F" or sex == "f" or sex == "m"
此行不会引发异常 - 如果键入了错误的字符,它只会计算为“false”。
也许你想要这样的东西:
if sex == "M" or sex == "F" or sex == "f" or sex == "m" : raise Exception(mens_erro)
至于第二部分 - 你的函数不会返回异常,所以没有必要把它放在一个try catch中:
while True:
sex = m_ou_f()
if sex == 'M' or sex == 'm':
print("Male")
break
elif sex == 'F' or sex == 'f':
print("Female")
break
但如果你这样做了:
try:
sex = m_ou_f();
except:
continue

TA贡献1842条经验 获得超13个赞
没有必要把同样的东西写两遍。
try 语句的工作原理如下。[来自 Python Docs]
首先,执行 try 子句(try 和 except 关键字之间的语句)。
如果未发生异常,则跳过 except 子句并完成 try 语句的执行。
如果在执行 try 子句期间发生异常,则将跳过该子句的其余部分。然后,如果其类型与以 except 关键字命名的异常匹配,则执行 except 子句,然后在 try 语句之后继续执行。
如果发生与 except 子句中指定的异常不匹配的异常,则会将其传递给外部 try 语句;如果未找到处理程序,则为未处理的异常,并且执行将停止并显示一条消息,如上所示。
在你的情况下,尝试块已成功执行,这就是为什么它不会进入块之外。
这将打印 .INVALID VALUE!
while True:
try:
sex = str(input("Type M for Male or F for Female: "))
except ValueError:
print("INVALID VALUE!")
if sex == 'M' or sex == 'm':
print("Male")
break
elif sex == 'F' or sex == 'f':
print("Female")
break
else:
print("INVALID VALUE!")
如果我必须添加更多解释,请告诉我。
添加回答
举报