Pythonの学習のために、IDLEシェル(対話モード)でelif
を入力しようとすると以下のように、インデントしているはずなのに、「SyntaxError: unindent does not match any outer indentation level(インデントの位置が一致していない)」というエラーが表示されてしまうことがあります。
今回は、このエラーをどうすれば回避できるかを説明します。
IDLEシェルではelifとelseは左に詰める
方法はとても簡単です。IDLEの対話モードでは、以下のようにelif
を左に詰めてください。else
も同様です。
これはIDLEシェル「独自の仕様」です。対話モードのプロンプト>>>
は便宜上表示しているだけで、コードとしては考慮しません。つまり、>>>
は無いものとしてコードを書くことになります。
そのため、以下のようにブロックの中では、先頭のifと左を揃えます。
ターミナルではパディングしてくれている
一方、コマンドプロンプトやターミナルで対話モード(インタラクティブシェル)を利用する場合は、以下のように2行からは、...
でパディング(詰め物)してくれます。
些細なことでもハマると・・
Pythonの入門書は、IDLEの対話モードから始めるのが定石ですが、なぜか本記事のことを説明している参考書が少ないです。恐らく当たり前のことだから書き忘れているかもしれません。初めて学習する時は、このような些細なことでつまずいしまうものです。参考にしていただけたら嬉しいです。