發表於 PythonPython Debug

【Python】解決 IndentationError: unindent does not match any outer indentation level – Python Debug 系列

為什麼會突然寫這個系列呢?
因為我想到我初學的時候常常遇到這個 Error 但是每次都解決很久卻都解決不了這種錯誤!
而這又不是一個程式 Error 而是一個 格式 Error
讓初學者更加得不好 Debug!
所以我決定做這系列幫助 Python新手村的大家!

這系列的每一篇都會講解每一種錯誤的發生原因、發生可能、與常見的解決方法!
而這篇主要面對的錯誤就是 : IndentationError!

發生原因:

首先我們先來看看官方的說法吧!

官方 PEP 666

PEP 666 IndentationError 解釋
PEP 666 IndentationError 解釋

在第一段就提到了這些話

 
Everybody agrees that mixing tabs and spaces is a bad idea. Some people want more than this. I propose that we let people define whatever Python behaviour they want, so it will only run the way they like it, and will not run the way they don't like it. We will do this with a command line switch. Programs that aren't formatted the way the programmer wants things will raiseIndentationError
.

說了這麼多到底原因有什麼呢 ?

常見的原因( 應該說所有可能的原因啦 )有兩種

  • 程式的 indent 不對
  • 混用 Tab 和 space

程式的 indent 不對

解決辦法

注意一下自己 code 中有沒有 if、for、class 或是其它尾端有加上 : 冒號的下一行有沒有正確的縮行喔!

這類型真的是很常見的錯誤,不過解決辦法也是相對簡單很多

混用 Tab 和 space

這個也是初學常見的問題之一,為什麼呢?

因為初學者常常從網路上的範例中一直複製貼上程式碼,結果導致程式碼中出現混合的 Tab 和 Space
也因此跳出很多這種錯誤…

解決辦法

不同的編輯器有不同的解決辦法,這邊我介紹我最常用的編輯器要怎麼解決吧!

Visual Studio Code 解決辦法

我最常使用的就是 VSCode 了!
在編輯器的右下角有這樣的符號

點選 【空格:4】那個按鈕!

VS code 設定tab space 介面 點選區域
VS code 設定tab space 介面 點選區域

接下來在上方就會看到這個介面!

VS code 設定tab space 介面
VS code 設定tab space 介面

接下來點選【將縮排轉換成空格】

接者就完成了啦~
為什麼我會說轉換成空格呢?

因為這是在實務上最保險的做法!!
並不是每個系統或是每個環境的 tab 寬度都是一樣的,所以轉換成寬度一樣的空格才可以避免每次都發生要調整寬度的問題喔!!!

結語:

因為我自己在 Python 這條路上也是跟很多前輩們一樣都是自學過來的
我想現在也有很多新手也是一樣在自學的路上吧
希望我踩過的地雷可以寫成文章幫助大家~~

如果有幫助的話可以在下面留言跟我分享喔!
我看到有幫助到別人我會很開心的呢!!!

那這篇就到這邊啦!
ㄅㄅ

廣告

作者:

一位 熱愛資工領域、喜歡好笑事物、偶爾打打網球 的學生 ! For A Better Me!

【Python】解決 IndentationError: unindent does not match any outer indentation level – Python Debug 系列 有 “ 2 則迴響 ”

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.