2 回答

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
sex == "M" or sex == "F" or sex == "f" or sex == "m"
此行不會(huì)引發(fā)異常 - 如果鍵入了錯(cuò)誤的字符,它只會(huì)計(jì)算為“false”。
也許你想要這樣的東西:
if sex == "M" or sex == "F" or sex == "f" or sex == "m" : raise Exception(mens_erro)
至于第二部分 - 你的函數(shù)不會(huì)返回異常,所以沒有必要把它放在一個(gè)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貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
沒有必要把同樣的東西寫兩遍。
try 語句的工作原理如下。[來自 Python Docs]
首先,執(zhí)行 try 子句(try 和 except 關(guān)鍵字之間的語句)。
如果未發(fā)生異常,則跳過 except 子句并完成 try 語句的執(zhí)行。
如果在執(zhí)行 try 子句期間發(fā)生異常,則將跳過該子句的其余部分。然后,如果其類型與以 except 關(guān)鍵字命名的異常匹配,則執(zhí)行 except 子句,然后在 try 語句之后繼續(xù)執(zhí)行。
如果發(fā)生與 except 子句中指定的異常不匹配的異常,則會(huì)將其傳遞給外部 try 語句;如果未找到處理程序,則為未處理的異常,并且執(zhí)行將停止并顯示一條消息,如上所示。
在你的情況下,嘗試塊已成功執(zhí)行,這就是為什么它不會(huì)進(jìn)入塊之外。
這將打印 .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!")
如果我必須添加更多解釋,請(qǐng)告訴我。
添加回答
舉報(bào)