本やUdemy、Progateなどを用いてPythonやhtml、cssの学習過程を残していきます。

【Python入門編】while文の使い方をわかりやすくメモしていく

jupyter-notebook

while文は基本的にはfor文のように繰り返し処理を実行する構文ですが、繰り返し処理を回し続けるか、ストップするかを条件式で決める事ができます。

if文は条件式毎に真偽を判定し、Trueであれば処理が実行されますが、while文は最初に条件式を設定し、Trueであり続ける限りブロックの処理が実行され続けます。

whileの基本構文

while 条件式:
[スペース]処理

while文を使うと条件式がTrueであり続ける限り、処理を何度も繰り返す事ができます。

見た目はif文と似ていますが、if文では処理を確認したら次に続きますが、while文は処理が行われたらwhile文の先頭に戻るループ処理が行われます。

if文とwhile文

if文

 >>>name = "ベア子"
 >>>age = 400
 >>>if age < 405:
 >>>    print("恐いのかしら?")
 >>>    age += 1
 >>>print(age)
恐いのかしら?
401

while文

 >>>name = "ベア子"
 >>>age = 400
 >>>while age < 405:
 >>>    print("怖いのかしら")
 >>>    age += 1
 >>>print(age)
怖いのかしら
怖いのかしら
怖いのかしら
怖いのかしら
怖いのかしら
405

上のif文とwhile文、どちらもageの値を調べて、405より小さければメッセージを表示し、ageを+1します。

両者似ていますが、実行してみると全然結果が違ってしまいます。

if文は「怖いのかしら」が1回表示され、400 が+1されたのに対し、
while文では「怖いのかしら」が5回表示され、400が+5されました。

if文のコードでは、条件式を調べてTrueなので「怖いのかしら」が1回表示され、age += 1が1度実行されprint(age)に続きました。

while文の方は条件式がFalseになるまで「怖いのかしら」を表示、age += 1の実行ループが続けられました。

5回繰り返したところでage < 405がFalseとなった為、ループを抜けprint(age)が実行されました。

break文

>>>age = 1
>>>while True:
>>>    print(age)
>>>    age += 1
1
2
3
4
5
・
・
・

上のwhile文は条件式が永遠にTrueになりますので、ループから抜けることができません。

無限ループを避ける為にbreak文が用いられます。

構文は以下の通りです。

>>>if 条件式:
>>>[スペース]break

訳すと、「条件式がTrueであれば、(現在の処理は)終わり。」となります。

 >>>age = 1
>>>while True:
>>>    print(age)
>>>    age += 1 
>>>    if age == 10:
>>>   print(str(age)+"となったので終了します")
>>>    break
1
2
3
.
.
.
9
10となったので終了します

最初の無限ループ文にbreak文を挿入しました。

age == 10になった段階でbreakが発動し、while文が終了します。

continue文

if節の条件式を満たしたらループ処理を終了させるbreak文に対し、if節の条件式を満たした場合のみ処理をスキップさせるものがcontinue文です。

構文もbreak文と似ており、以下の通りです。

if 条件式:
[スペース]continue

訳すと、「条件式がTrueであれば、処理をスキップせよ」です。

>>>age = 0
>>>while age < 10:
>>>    age += 1
>>>    print(age)
1
2
3
.
.
.
9
10

上は1~10までを順番に表示させるコードです。

ここに偶数を(2の倍数)をスキップさせるcontinue文を挿入します。

>>>age = 0
>>>while age < 10:
>>>    age += 1
>>>    if age % 2 == 0:
>>>        print("偶数です")
>>>        continue
>>>    print(age)
1
偶数です
3
偶数です
5
偶数です
7
偶数です
9
偶数です

偶数(2の倍数)であれば、print(“偶数です”)を実行してその後の処理(print(age))はスキップされていることがわかります。

この記事を書いた人

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です