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!")
如果我必須添加更多解釋,請告訴我。
添加回答
舉報