サイトアイコン IT & ライフハックブログ|学びと実践のためのアイデア集

【授業レポート】システム開発入門 第4週目:Pythonのfor文とwhile文で繰り返しを学ぶ

blue spiral neon light

Photo by Frank Cone on Pexels.com

システム開発入門の第4週目では、Pythonのループ処理を学びました。
ループ処理とは、同じ命令を決めた回数だけ、または条件が成り立つ間、繰り返して実行する仕組みです。

授業では、1から5までの数字を表示する例を使い、for文とwhile文の書き方を比べました。
どちらも同じ結果を出せますが、繰り返し方の指定が異なります。

今回の授業で学んだこと

前回は、条件によって処理を切り替える方法を学びました。
今回のwhile文でも条件を使うため、必要に応じて第3週目のPython条件分岐を振り返ると、コードの流れを追いやすくなります。

繰り返し処理が役立つ場面

授業の導入では、先生が「1から10まで数える作業を100回続けるとしたらどうか」と問いかけました。
生徒からは「途中で飽きる」「コンピュータならできそう」という反応が返ります。

同じ手順を何度も実行するとき、人が命令を繰り返し書く必要はありません。
繰り返す範囲や終了条件をプログラムに示せば、同じ処理をまとめて表せます。

for文で1から5まで表示する

最初の実習では、for文を使って1から5までの数字を表示しました。

for i in range(1, 6):
    print(i)

このコードは、次のように読みます。

range(1, 6)の終了位置である6は、繰り返しに含まれません。
そのため、実行結果は次のとおりです。

1
2
3
4
5

授業では、変数名のiは慣例であり、別の名前も使えると確認しました。
たとえば、役割が分かるようにnumberと書けば、同じ処理を次のように表せます。

for number in range(1, 6):
    print(number)

while文で条件が成り立つ間だけ繰り返す

次の実習では、while文を使って同じく1から5までを表示しました。

x = 1

while x <= 5:
    print(x)
    x += 1

最初にxへ1を入れ、x <= 5が成り立つ間だけ、字下げされた二つの処理を繰り返します。
x += 1は、表示するたびにxを1増やす命令です。

繰り返し開始時のx x <= 5 表示 次の値
1 成り立つ 1 2
2 成り立つ 2 3
3 成り立つ 3 4
4 成り立つ 4 5
5 成り立つ 5 6
6 成り立たない 表示しない 終了

xが6になると条件が成り立たなくなり、繰り返しは終了します。
この例でx += 1を書かなければ、xは1のままで条件が変わらず、処理は終了しません。

while文は、最初に条件を確かめてから処理を実行します。
たとえば開始時のxが6なら、x <= 5は最初から成り立たないため、処理は一度も実行されません。

for文とwhile文の違い

今回の二つの例は、どちらも1から5までを表示します。
違いは、繰り返しを制御する方法にあります。

書き方 繰り返しの基準 今回の例で確認する点
for rangeが用意する値 終了位置の値は含まれない
while 条件が成り立つかどうか 条件がいずれ成り立たなくなるように値を更新する

回数や処理する値の範囲を先に示せる今回のような場面では、for文で簡潔に書けます。
一方、「ある条件が成り立つ間」と表したい場面では、while文が処理の意図を示しやすくなります。

ミニ課題で考えた繰り返し

授業の後半では、生徒が繰り返し処理を使う題材を考えました。
挙がった案は次の三つです。

「3の倍数なら表示する」という案では、今回の繰り返しに前回の条件分岐を組み合わせます。
カウントダウンでは値を増やす代わりに減らすため、終了条件までの変化を考えてからコードを書くことになります。

「なんか、ゲームの中身っぽいの作ってる感じしてきた」

「くり返しって、工夫すると面白いことできそう!」

繰り返しを使うときの確認項目

先生は、ループを使うことを「自動化の第一歩」と説明しました。
人が同じ命令を何度も書いたり実行したりする代わりに、繰り返し方を一度コードで示せるからです。

次回はリストで複数のデータを扱う

次回は、生徒名やテストの点数、買い物項目のような複数のデータをまとめて扱うリストへ進みます。
第5週目の配列とまとめて処理する実習では、今回学んだ繰り返しとデータを組み合わせます。

各学年で扱う内容を含めた授業の全体像は、高校のシステム開発授業の紹介で確認できます。

モバイルバージョンを終了