01 / 06
行の先頭の空白は飾りではない
多くの言語では、行の先頭に空白をいくつ入れても動きは変わらない。見やすさのための飾りにすぎないんだ。
Pythonはちがう。行の先頭の空白は文法そのもので、勝手に入れるとエラーになるし、必要なところで入れないとやはりエラーになる。
この空白のことをインデント(字下げ)と呼ぶよ。
文法のきほん
INPUT · スライド
01 / 06
多くの言語では、行の先頭に空白をいくつ入れても動きは変わらない。見やすさのための飾りにすぎないんだ。
Pythonはちがう。行の先頭の空白は文法そのもので、勝手に入れるとエラーになるし、必要なところで入れないとやはりエラーになる。
この空白のことをインデント(字下げ)と呼ぶよ。
02 / 06
まずはエラーを見てみよう。2行目の頭に空白が1つ入っているだけで、Pythonは止まってしまう。
IndentationError: unexpected indent は「予期しない字下げがある」という意味。「ここは下げる場所じゃないよ」と言われているんだ。
print("あさ") print("ひる")実行結果
IndentationError: unexpected indent
03 / 06
多くの言語は、まとまり(ブロック)を波かっこ { } で囲んで表す。Pythonはそれをやめて、字下げの深さでまとまりを表すことにした。
理由はシンプルで、読みやすいコードは、どうせ字下げして書かれているから。だったら字下げ自体をルールにしてしまえば、記号を書く手間が減るし、書きかたのばらつきも消える。
つまりPythonの字下げは、「見やすく書きなさい」を文法で強制しているんだよ。
04 / 06
まとまりを作るときの形は決まっているよ。行の終わりを : (コロン)で閉じて、次の行から字下げする。
下の形は次のレッスンで習う if だけど、いまは形だけ見ておこう。: の次の行が右にずれているのが分かるかな。字下げされている行が「まとまりの中身」だよ。
ten = 80if ten > 60: print("ごうかく")実行結果
ごうかく
05 / 06
字下げの幅は「1つ以上の空白」であれば動くけれど、スペース4つにそろえるのがPythonの慣習だよ。
同じまとまりの中では幅をそろえるのが絶対条件。1行目が4つで2行目が2つだと IndentationError: unindent does not match any outer indentation level になる。「その下げ幅に合うまとまりが無い」という意味だよ。
ten = 80if ten > 60: print("ごうかく") print("おめでとう")実行結果
IndentationError: unindent does not match any outer indentation level
06 / 06
タブ文字でも字下げはできるけれど、スペースと混ぜると TabError になる。見た目が同じ幅でも中身が別の文字だから、Pythonには区別がつくんだ。
この教材のエディタはタブを押すとスペースが入るようになっているので、気にしなくて大丈夫。自分の環境で書くときは「スペースだけ」に決めておこう。
スマホで書くときのコツをひとつ。うまくいかないときは、まず行の先頭を疑う。目に見えない空白が入っていることが本当に多いよ。