ファイル名: 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
while や for の繰り返しループの処理中にある条件がでてきたときにループから飛び出る命令が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回求めています。どちらで書くかは好みの問題です。


コメント