2017-08-09 100 views
0

我有一個Try內部/單行除塊,但是當出現異常正在執行這個塊之外另一條線。我在我的手機上,所以我只需輸入幾行Python的指令外嘗試:除了:

try: 
    total=total+int(number) 
except: 
    print('Bad input') 
count = count + 1 

當我輸入數字時,計數會按預期遞增。如果輸入一個字符,異常會被捕獲,但計數仍會增加。如果發生異常,我認爲只有try/except塊中的行會重複。

+3

Try-except語句不會自動重複任何操作。如果你有一個'while'循環包裹這個或者什麼的話,'while'循環將會重複整個循環體。 – user2357112

回答

1

您需要使用try/except語句的else條款,如果你只是想增加count如果一個例外是提高。 From the documentation section 8.3 Handling Exceptions

在try ... except語句有一個可選的else子句,其中,如果存在的話,必須遵循所有的條款除外。如果try子句不引發異常,則必須執行該代碼。

try: 
    total += int(number) 
except ValueError: 
    print('Bad input') 
else: 
    count += 1 

正如你可以從上面看到的,我改變了你的光,除了語句來捕獲特定的異常類型ValueError,因爲這會如果不能轉換它的參數的intint將提高。如果您想要捕獲其他例外情況,請更改ValueError,但不要使用純粹的except子句,因爲它可以屏蔽重要的例外情況。

同樣如評論中所述,try/except聲明不會多次執行它的正文。如果你想要這種行爲,你需要一個循環。

+0

謝謝。我錯誤地認爲嘗試/除了自己的循環。菜鳥的錯誤。這包括在一個while循環中,但我不想在手機上輸入它。我不知道其他選項,謝謝。當我輸入我的代碼時,我看到我的原始帖子沒有正確格式化。輸入代碼和維護縮進的正確步驟是什麼? – Ali

+0

@Ali突出顯示您希望縮進的所有代碼。然後按編輯標題中的「{}」按鈕,或使用快捷鍵「ctrl + k」。 –

0

,當你輸入字符拋出異常。無論如何,行count = count + 1仍然被執行。因爲count = count + 1不在else:這就是爲什麼計數仍然增加。 另外,要認識到try-except語句不會重複。