Pythonの学習のために、IDLEシェル(対話モード)elifを入力しようとすると以下のように、インデントしているはずなのに、「SyntaxError: unindent does not match any outer indentation level(インデントの位置が一致していない)」というエラーが表示されてしまうことがあります。

idle indent error

今回は、このエラーをどうすれば回避できるかを説明します。

IDLEシェルではelifとelseは左に詰める

方法はとても簡単です。IDLEの対話モードでは、以下のようにelifを左に詰めてください。elseも同様です。

idle indent

これはIDLEシェル「独自の仕様」です。対話モードのプロンプト>>> は便宜上表示しているだけで、コードとしては考慮しません。つまり、>>> は無いものとしてコードを書くことになります。

そのため、以下のようにブロックの中では、先頭のifと左を揃えます

indent block

ターミナルではパディングしてくれている

一方、コマンドプロンプトターミナルで対話モード(インタラクティブシェル)を利用する場合は、以下のように2行からは、... パディング(詰め物)してくれます。

terminal indent

些細なことでもハマると・・

Pythonの入門書は、IDLEの対話モードから始めるのが定石ですが、なぜかこのことを説明している参考書が少ないです。恐らく当たり前のことだから書き忘れているかもしれません。

しかし、初めて学習する時は、このような些細なことでつまずいしまうものです。弊社が実施しているPython通信講座では、このような「初学者のつまずき」を最大限なくすよう努めています。興味がございましたら、是非下記のページをご覧ください。

Pythonを覚えれば、退屈な仕事を自分で自動化できます。 退屈な仕事に埋没してませんか。退屈に感じるのは単純な繰り返し作業だからです。そんな仕事はPythonで自動化しましょう。 本講座…