くり返しとデータの持ち方

INPUT · スライド

道具を組み合わせて解く

01 / 06

手に入れた道具をならべる

この章で手に入れた道具をならべてみよう。

  • くり返し … for / range / while / break / continue
  • リスト … [ ] / 番号で取り出す / append / len / sorted / スライス
  • 文字列 … 番号 / スライス / in / split / join
  • 辞書とタプル … 名前で引く入れ物と、あとから変えられない組

ここに第1章の変数と条件分岐が加わる。新しい文法はもう出てこないよ。ここからはどれを選ぶかの練習だ。

02 / 06

for か while か

同じくり返しでも、選びかたの目安がある。

  • 回数が先に決まっているなら for。「3回」「リストの件数ぶん」
  • 終わりが条件で決まるなら while。「在庫が足りているあいだ」

迷ったら「何回まわるか、書く前に言えるか」と自分に聞いてみよう。言えるなら for だよ。

zaiko = 10kaisu = 0while zaiko >= 3:    zaiko -= 3    kaisu += 1print(kaisu)print(zaiko)

実行結果

3
1

03 / 06

まわす・えらぶ・ためる

大きく見える問題も、3つの仕事に分ければこわくない。

  • まわす … for で1件ずつ取り出す
  • えらぶ … if で条件に合うものだけ通す
  • ためる … 合計や件数を、くり返しの外に置いた変数に足しこむ

ためる変数をくり返しの中で作ってしまうと、1周するたびに 0 に戻ってしまう。外に置くのがコツだよ。

tens = [55, 78, 92, 61]ninzu = 0for ten in tens:    if ten >= 70:        ninzu += 1print(ninzu)

実行結果

2

04 / 06

break と continue の使い分け

どちらもくり返しの流れを変える道具だけれど、役目はまったくちがう。

  • break … もう回らなくていい。探しものが見つかった、終わりが来た
  • continue … この1件だけ飛ばす。まだ先を見たい

「見つけたら break」「いらないデータは continue」と覚えると迷いにくいよ。

nedans = [120, 300, 80, 450]for nedan in nedans:    if nedan < 100:        continue    print(nedan)

実行結果

120
300
450

05 / 06

番号が要るときだけ range と len

リストをただ回すなら for kudamono in kudamonos: でいい。番号が要るときだけ for i in range(len(kudamonos)): にする。

番号が要るのは「1. 2. 3. と数字をつけたい」「2本のリストを同じ位置でそろえたい」といったときだけ。それ以外で使うと kudamonos[i] が増えて、かえって読みにくくなるよ。

kudamonos = ["りんご", "みかん"]for i in range(len(kudamonos)):    print(f"{i + 1}. {kudamonos[i]}")

実行結果

1. りんご
2. みかん

06 / 06

動かないときは途中を見る

思ったとおりに動かないときは、途中の値を表示するのがいちばん早い。

くり返しの中に print(i) や print(goukei) を一時的に足して、1周ごとに何が入っているかを見てみよう。頭の中の想像と実際の値がずれているところが、必ず見つかる。

それじゃあ、10問やってみよう。あとの問題ほど大きくなるよ。