2017-09-12 56 views
-1

我除了阻止關於一個奇怪的問題,尤其是最後:除最後 - 操作員

代碼的第一座在最後的作品,因爲它應該工作,同時在第二個是從第一個minimaly不同之總是給你一個錯誤。

第一:

def askint(): 
while True: 
    try: 
     val = int(raw_input("Please enter an integer: ")) 
    except: 
     print "Looks like you did not enter an integer!" 
     continue 
    else: 
     print 'Yep thats an integer!' 
     break 
    finally: 
     print "Finally, I executed!" 
    print val 

二:

def Abra(): 
while True: 
    try: 
     v = int(raw_input('Geben Sie bitte einen Integer ein (1-9) : ')) 
    except : 
     print 'Einen Integer bitte (1-9)' 
     continue 

    if v not in range(1,10): 
     print ' Einen Integer von 1-9' 
     continue 
    else: 
     print 'Gut gemacht' 
     break 
    finally: 
     print "Finally, I executed!" 

阿布拉()

打開所有的解決方案 - 由於

+0

'if'在同一縮進級別結束'try'控制結構。 「最後」與它無關。 –

+0

您的第二個代碼塊中的'finally'不在'except'塊之後。這是一個語法錯誤... – GPhilo

回答

0

的最後條款必須直接連接到嘗試/除外條款爲了它的工作。在第二個代碼塊中,在try/except和finally之間有一個if/else。因此,結構是try/except,if/else,最後,這是無效的。在第一種情況下,else是一個在異常不被引發時執行的塊,因此是try/except的一部分 - 結構是try/except/else/finally。

1

我相信你得到的困惑來自第一個例子中的else

在「try/except」塊中,區域try,except,elsefinally都是有效的。這可能會誤導給新程序員,因爲elseif語句不同。

你可以閱讀一下:Python try-else

在第二個例子中,if說法是不合時宜的,因爲它應該是整個try/except/else/finally塊之外,或咬入部分之一正確。

爲了您的具體的例子,你會想一些與此類似:

def Abra(): 
    while True: 
    try: 
     v = int(raw_input('Geben Sie bitte einen Integer ein (1-9) : ')) 
     if v not in range(1,10): 
      print ' Einen Integer von 1-9' 
      continue 
    except : 
     print 'Einen Integer bitte (1-9)' 
     continue 
    else: 
     print 'Gut gemacht' 
     break 
    finally: 
     print "Finally, I executed!" 

雖然,我可能會建議你只是刪除else以避免混淆自己(但是這是一個更好的說法中討論上面的鏈接):

def Abra(): 
    while True: 
    try: 
     v = int(raw_input('Geben Sie bitte einen Integer ein (1-9) : ')) 
     if v not in range(1,10): 
      print ' Einen Integer von 1-9' 
      continue 
     print 'Gut gemacht' 
     break 
    except : 
     print 'Einen Integer bitte (1-9)' 
     continue 
    finally: 
     print "Finally, I executed!" 
+0

我可以合併一個可行的,如果 - 語句與最後也? – Roman

+0

我已經添加了一個如何構建它的例子。如果沒有別的,這是工作代碼,你可以用它來更好地理解你出錯的地方。 – Bilkokuya