例如以下程序。編程
運行上面代碼,若是輸入年齡小於20,將會看到以下運行結果。學習
從上面代碼能夠看出,若是輸入的年齡大於20,則程序會執行總體縮進的代碼塊。spa
再次重複:Python不是格式自由的語言,所以你不能爲所欲爲地縮進,必須按Python語法要求縮進。下面詳細介紹在縮進過程當中可能致使的錯誤。3d
不要忘記縮進orm
代碼塊必定要縮進,不然就不是代碼塊。例如以下程序。視頻
上面程序的if條件與下面的print語句位於同一條豎線上,這樣在if條件下就沒有受控制的代碼塊了。所以,上面程序執行時會報出以下錯誤。blog
注意:if條件後的條件執行體必定要縮進。只有縮進後的代碼才能算條件執行體。io
接下來讀者會產生一個疑問:代碼塊(條件執行體)到底要縮進多少呢?這個隨意。你能夠縮進1個空格、2個空格、3個空格……或1個Tab位,這都是符合語法要求的。但從編程習慣來看,Python一般建議縮進4個空格。編譯
有些時候,Python解釋器不會報錯,但並不表明程序沒有錯誤。例如以下代碼form
解釋執行上面程序,程序不會報任何錯誤。但若是輸入一個小於20的年齡,則可看到以下運行過程。
從運行過程能夠看出,咱們輸入的年齡明明小於20,但運行結果仍是會打印「20歲以上……」。這是爲何呢?就是由於這條print語句沒有縮進。若是這行代碼不縮進,那麼Python就不會把這行代碼當成條件執行體,它就不受if條件的控制,所以不管用戶輸入什麼年齡,print語句總會執行。
若是忘記正確地縮進,極可能致使程序的運行結果超出咱們的預期。例如以下程序。
面代碼中以粗體字標識的代碼行:print("b不大於4")總會執行,由於這行代碼沒有縮進,所以它就不屬於else後的條件執行體,else後的條件執行體只有b - =1這一行代碼。
若是要讓print("b不大於4")語句也處於else控制之下,則須要讓這行代碼也縮進4個空格。
if、else、elif後的條件執行體必須使用相同縮進的代碼塊,將這個代碼塊總體做爲條件執行體。當if後有多條語句做爲條件執行體時,若是忘記了縮進某一行代碼,則會引發語法錯誤。看下面代碼(程序清單同上)。
在上面代碼中,由於if後的條件執行體的最後一條語句沒有縮進,因此係統只把c - = 1一行代碼做爲條件執行體,當c -= 1語句執行結束後,if語句也就執行結束了。後面的print("c大於4")已是一行普通代碼,再也不屬於條件執行體,從而致使else語句沒有if語句,引起編譯錯誤。在學習中有迷茫不知如何學習的朋友小編推薦一個學Python的學習q u n 227 -435- 450能夠來了解一塊兒進步一塊兒學習!免費分享視頻資料
運行上面代碼,將看到以下錯誤。
爲了改正上面的代碼,須要讓print("c大於4")也縮進4個空格。
不要隨意縮進
須要說明的是,雖然Python語法容許代碼塊隨意縮進N個空格,但同一個代碼塊內的代碼必須保持相同的縮進,不能一會縮進2個空格,一會縮進4個空格。
例如以下代碼。
上面程序中第二條print語句縮進了5個空格,在這樣的狀況下,Python解釋器認爲這條語句與前一條語句(縮進了4個空格)不是同一個代碼塊(這就是遊標卡尺笑話的由來),所以Python解釋器會報錯。運行上面代碼,將會報出以下錯誤。
把代碼改成以下形式。
上面程序中第二條print語句只縮進了3個空格,它與前一條print語句(縮進了4個空格)一樣不屬於同一個代碼塊,所以Python解釋器仍是會報錯。運行上面代碼,則會報出以下錯誤。
經過上面介紹能夠看出,Python代碼塊中的全部語句必須保持相同的縮進,既不能多,也不能少。
注意:位於同一個代碼塊中的全部語句必須保持相同的縮進,既不能多,也不能少。
另外,須要說明的是,對於不須要使用代碼塊的地方,千萬不要隨意縮進,不然程序也會報錯。例如以下簡單的程序。
上面程序只有兩條簡單的執行語句,並無包括分支、循環等流程控制,所以不該該使用縮進。解釋執行上面代碼,將會看到以下錯誤。
來源:https://www.jianshu.com/p/253fcbfc0fde