CHAPTER 2 · 24 lessons · 306問
くり返しとデータの持ち方
同じ処理を何回もくり返し、たくさんの値をまとめて持つ。プログラムが一気に実用的になるところ。
前の章で書いたプログラムには、大きな限界がひとつあった。扱える値の数が、書いた行数の分しかないということだ。3人ぶんのデータを出したいなら3行、100人ぶんなら100行。これでは現実のアプリは作れない。
この章で、その壁を壊す。使う道具は2つ。くり返しとまとめて持つ入れ物だよ。
くり返しは for から入る。Python の for は「回数を数える」というより「並んでいるものを1つずつ取り出す」書き方で、for kudamono in kudamonos: と書けば、リストの中身が順番に kudamono に入ってくる。回数を決めて回したいときは range を組み合わせる。もうひとつが while で、こちらは「条件が成り立つあいだ、ずっと」。回数がはっきりしているなら for、終わりが条件で決まるなら while だよ。
ここで一度は必ず出会うのが 無限ループ。終わる条件を書きまちがえると、プログラムが止まらなくなる。この教材では一定時間で自動的に止めて、何が起きたかを表示するようにしてある。こわがらずに、わざと作ってみるといい。「なぜ終わらないのか」を自分で説明できるようになれば、それはもう理解したということだよ。
入れ物のほうは リスト から。["りんご", "みかん", "ぶどう"] のように、値を順番に並べて1つの名前で持つ。中身は kudamonos[0] のように0から数える番号で取り出す。1からではなく0から、というのは最初は必ず戸惑うところだ。Python には kudamonos[-1] で末尾を取れるという親切もあって、これは他の多くの言語には無い書き方だよ。
そのあと、文字列も同じように扱えることを見る。namae[0] で1文字目、namae[0:3] で先頭3文字。リストで覚えた番号とスライスが、そのまま文字列にも効く。Python は「並んでいるもの」を同じ書き方で扱えるように作られていて、これに気づくと覚えることが一気に減るよ。
もうひとつの入れ物が 辞書。リストが「番号で取り出す入れ物」なら、辞書は「名前で取り出す入れ物」だ。{"namae": "ゆい", "toshi": 15} と書いて hito["namae"] で取り出す。人やお店や商品のように、いくつかの項目がひとまとまりになっているものを表すのに向いている。あわせて、あとから中身を変えられない タプル も扱うよ。
この2つは組み合わせて使うのが本番だ。「辞書をリストに並べる」という形にすると、名簿や商品一覧といった現実のデータがそのまま表現できる。そこにくり返しをかければ、100件だろうと1000件だろうと同じコードで処理できる。章の最後は、くり返しと条件分岐とリストを全部使う総合演習で締めるよ。
この章のレッスン
同じことをくり返す
並べて持つ
文字列をもっと
名前で引く
組み合わせる