MENU

1-12 繰り返し処理 while

ファイル名: note12.ipynb

while文は「条件が真の間」繰り返し続けます。forが繰り返しの回数を指定しているのに対し、whileは条件で繰り返しを制御します。

while の繰り返し処理が必要な場面

  • 正しい入力がされるまで、繰り返し入力を求める。
  • ゲームオーバーになるまで、ゲームを継続する。
  • ユーザーが終了ボタンを押すまで、処理を続ける。

1. while文の構造

条件が「True」の間、同じ作業を繰り返します。

while 条件:
    くり返したい処理 

意味は、「条件が正しい間、下の処理をくり返す」です。

例えば、ユーザーが入力したパスワードが間違っている間は、パスワードの入力を求めるというような場合です。

password = input("パスワードを入力してください: ")

while password != "abc":
    password = input("パスワードを入力してください: ")

print("ログイン成功!")

for文と同じような処理もできます。
変数num を1から始めて、2ずつ増やして表示し、10を超えたら止めるという処理は次のように書きます。

num = 1

while num <= 10:
    print(num)
    num = num + 2 

2. ループを飛びでる命令 break

whilefor の繰り返しループの処理中にある条件がでてきたときにループから飛び出る命令がbreakです。

たとえば、ユーザーに電話番号を入力してもらい、11桁にならなければ、再度入力を求めるが、110と119の場合は「これは緊急電話です」と表示するプログラム

phone_num = input("Please enter phone number: ")

while len(phone_num) != 11:
    if phone_num == "110" or phone_num == "119":
        break
    phone_num = input("Please enter phone number: ")

print(f"You call {phone_num}") 

3. 無限ループ while True :

while 文の条件に Trueと書くと、決してFalse にならないので、無限ループになり、処理は永遠に続きます。

無限ループを止めには、
ターミナルなら、Ctrl + C で停止します。
VS Codeなら、セルの左にある停止ボタン⏸️で停止します。

while True:
    print("Hello") 

上記のコードを実行すると、Helloが表示されつづけます。

このような無限ループもbreak を使って止めることができます。これはループの基本パターンといってもよい方法です。

たとえば、犯人の名前を入力してもらい、正解になるまで無限ループを続けるという処理は次のようになります。

while True:
    name = input("Who is the culprit? ").title()
    if name == "Nishikawa":
        break
    print(f"It's not {name}")
print(f"That's right. {name} is the culprit.") 

このコードは無限ループとbreakを用いなくても次のように書くことができます。

name = input("Who is the culprit? ").title()
while name != "Nishikawa":
    print(f"It's not {name}")
    name = input("Who is the culprit? ").title()
print(f"That's right. {name} is the culprit.") 

2つ目の方法ではwhile の条件で name を判断するので、先に nameを定義する必要があるので、nameの入力を2回求めています。どちらで書くかは好みの問題です。

コメント

コメントする