2017-11-03 149 views
-1

我試過異常處理和陷在了我的第一個程序,在這個程序我第一次繼續在同時工作,但第二個一個不連續的環用Python 2繼續在一段時間

print("hello to divide") 
o = "y" 
while o == "y": 
    try: 
     x = int(input("enter first no. = ")) 
     y = int(input("enter second no. = ")) 
    except: 
     print("please enter numeric value") 
     continue 
    try: 
     z = x/y 
     print(str(x) +"/"+str(y)+"="+str(z)) 
    except: 
     print("please do not divide with 0(zero)") 
     continue 

    finally: 
     o = input("do you want to do it again (y/n)? = ") 

第二個不同之處工作正常,但打印後的消息,它跳轉到最後聲明

請幫忙?

+0

我試圖格式化你的代碼,但你應該確保它準確地反映了你確實有。 –

+0

你爲什麼繼續使用? – scharette

+1

是的,因爲'finally'總是被執行。這就是整個問題。 –

回答

1

docs

一個最後條款離開try 聲明,是否已經發生異常之前始終執行。當異常 已發生try子句中並且尚未由 except子句處理(或它發生在exceptelse子句), 它是在finally條款已經被執行之後重新上升。該 finally子句還執行「的出路」的時候,try語句中的任何其他條款 通過breakcontinuereturn聲明離開。一個更復雜的例子:

我敢肯定你只是想:

print("hello to divide") 
o = "y" 
while o == "y": 
    try: 
     x = int(input("enter first no. = ")) 
     y = int(input("enter second no. = ")) 
    except: 
     print("please enter numeric value") 
     continue 
    try: 
     z = x/y 
     print(str(x) +"/"+str(y)+"="+str(z)) 
    except: 
     print("please do not divide with 0(zero)") 
     continue 

    o = input("do you want to do it again (y/n)? = ")