繰り返し文とは
繰り返し文は条件を満たしている間、処理が繰り返されます。
例えば、1から10までを表示する処理があったとします。
この時、繰り返し文を使用しなければコードの量が多くなります。これが1000まで表示するだったら気が遠くなることは間違いないです。
コード
# 1から10までを足す。
print("1")
print("2")
print("3")
print("4")
print("5")
print("6")
print("7")
print("8")
print("9")
print("10")
これを繰り返し文で書くと簡単に書くことができます。
コード
# 変数宣言
count = 1
# 1から10までを表示する。
while count <= 10:
print(count)
count = count + 1
print("終了")
もし1000回まで足すとなった場合、「while count <= 10」 の 10 を 1000 に変更するだけで終わります。
繰り返し文の書き方には2通りあります。
・while文
・for文
この章ではwhile文について解説します。
while文の書き方
while文の書き方以下の通りです。
while 条件式:
処理1
....
処理2
処理3
while文は処理1の実行前に条件式のチェックが行われます。この時 True の場合は処理1が実行され、whileのブロック内最後の処理(処理2)が実行された後、再び条件式のチェックに戻ります。
条件式で False となると、処理1と処理2は実行されずに処理3が実行されます。
先ほど例に挙げた1から10までを表示するプログラムの処理の順番に見ていきます。
1.変数宣言
2.条件式( count <= 10 )のチェックを行う。
3.countの値が 1 であるため、True となる。
4.whileのブロック内の処理が実行される。
5.条件式のチェックを行う。
6.countの値が 2 であるため、True となる。
7.whileのブロック内の処理が実行される。
8.条件式のチェックを行う。
︙
29.条件式のチェックを行う。
30.countの値が 10 であるため、True となる。
31.whileのブロック内の処理が実行される。
32.条件式のチェックを行う。
33.countの値が 11 であるため、False となる。
34.whileのブロック内の処理が実行されず、print(“終了”)が実行される。
35.処理終了
またif文の時と同様に、以下の点に注意してください。
1. while の最後に コロン( : ) をつける。
2. while内の処理は インデント する。
無限ループになった時の対処法
while文を書いていると、条件式の部分がずっと True になってしまい、無限ループになってしまうことがあります。その時の場合に備えて無限ループの止め方を覚えておきましょう。
無限ループになった時の止め方は以下の通りです。
Windowsの場合は、ctrl + c
Macの場合は、 control + c を押す。
押しても止まらない場合は、一度ターミナルの部分をクリックして、もう一度ボタンを押してみてください。
無限ループになる例を挙げます。
コード
# 変数宣言
result = 0
count = 1
# 1から10までを足す。
while count >= 1:
result = result + count
count = count + 1
print(result)
この場合ですと、条件式が countが1以上なら になっているので、ずっと True になってしまい、無限ループに入ってしまいます。
練習問題
問題1
1 から 10 までを足した結果を表示するプログラムを作成せよ
コード
# 変数宣言
result = 0
count = 1
# 1から10までを足す。
while count <= 10:
result = result + count
count = count + 1
print(result)
※ コードは解答例です。正解は一つではありません。
問題2
1 から 10 のうち、奇数のみを足し算した結果を出力するプログラムを作成せよ。
最初は
①1 から 10 までを足すプログラム
②奇数どうかを判別するプログラム
と分けて考えてみましょう。
①問題1で作成したプログラムになります。
②奇数というのは 2 で割ると 1 余る数字です。
奇数かどうかを判別するので、「もし奇数なら」と条件分岐で表現します。
2つのプログラムができたら、合体させましょう。
コード
# 変数宣言
result = 0
count = 1
# 1から10までを足す。
while count <= 10:
# countが奇数なら足し算を行う
if count % 2 == 1:
result = result + count
count = count + 1
print(result)
※ コードは解答例です。正解は一つではありません。