while文とは、繰り返し処理の1つで、指定された条件式がTrueの間は処理が繰り返し実行されます。そして、条件式がFalseになった時にwhile文は終了します。
このwhileの条件文には否定のnotも利用することができます。この場合、notで否定された条件を満たすまで繰り返し処理を行います。
このページでは、Pythonにおけるwhile文の様々な使い方の中でも、while notの使い方について、具体的な例も交えながら確認していきます。
while not以外のwhile文の詳しい説明は、「図解!Python while文のループ処理を徹底解説!」を参照ください。
発売数9,000本突破を記念して、今だけ期間限定で87%オフの大セール中!!!
Pythonにおけるwhile文の記述方法
まずはwhile文の基本的な記述方法からおさらいしていきましょう。while文とは、for文と同様、繰り返し処理の1つです。
条件式を指定し、その条件式がTrueの間はWhile文のブロック内の処理が繰り返し実行されますが、条件式がFalseになった時にwhile文は終了します。
記述方法は以下のとおりです。
while文に含まれる処理は、インデント(字下げ)して記述します(通常、インデントには半角スペース4つが使われます。)。処理が複数行ある場合も、全てインデントします。
インデントが終わると、while文の一連の処理は終わります。また条件式の後には、必ず :(コロン)を付けてください。
for文とwhile文は同じ繰り返し処理ですが、次の点が異なります。
- for文は回数を指定して、指定した回数分の繰り返し処理を行います。
- 一方でwhile文は、条件を指定して、その条件がTrueの間は繰り返し処理を行い、Falseになれば繰り返し処理を抜けます。
for文の詳しい説明は、「図解!Python for ループ文の徹底解説」を参照ください。
それではwhile文の例を見ていきましょう。
変数iに0を初期値として代入し、while文の条件としてiが3未満を指定しています。そして、printでiの値を表示し、iに1を加算しています。
1 2 3 4 | i = 0 while i < 3: print(i) i = i + 1 |
1
2
iが3になるまでは、指定された条件がTrueですので繰り返し処理を行う事になります。従ってprintで表示されるiの値は、0から2までになります。
この基本的な使い方を元に、while notの使い方を詳しく確認していきます。
while not で条件を満たすまで繰り返し
whileの条件文には否定のnotも利用することができます。この場合、notで否定された条件を満たすまで繰り返し処理を行います。
それでは、whileの条件文にnotを利用した例を見ていきましょう。
次のコードでは、input()で文字の入力を促し、入力された値を変数nameに格納します。変数min_lengthには4を代入し、while文でnameにアルファベットが5文字以上入力されるまで繰り返し処理をします。
条件が満たされるまでwhileの中のinput()で入力を求められます。アルファベットが5文字以上入力されるとwhileの繰り返し処理が終わり、print()で入力結果を表示しています。
1 2 3 4 5 | min_length = 4 name = input("アルファベットを5文字以上入力してください:") while not(len(name) > min_length and name.isalpha()): name = input("アルファベットを5文字以上入力してください:") print("あなたは、{0} と入力しました。".format(name)) |
これを実行すると、次のinput()の処理で入力を求められます。ここでは、「test」と入力しました。
1 | name = input("アルファベットを5文字以上入力してください:") |
すると次の箇所で再度入力を求められます。ここではアルファベット5文字以上の入力条件を満たすまで処理が繰り返されます。ここでは「testtest」と入力しました。
1 2 | while not(len(name) > min_length and name.isalpha()): name = input("アルファベットを5文字以上入力してください:") |
そして、次のprint()が実行され、先ほどの入力内容が表示されました。
1 | print("あなたは、{0} と入力しました。".format(name)) |
ポイント
また参考までに、先ほどのコードは次のようにwhile Trueとbreakを使っても書き換えることができます。こちらの方がinput()の記述を1回で済ませることができます。
1 2 3 4 5 6 | min_length = 4 while True: name = input("アルファベットを5文字以上入力してください:") if len(name) > min_length and name.isalpha(): break print("あなたは、{0} と入力しました。".format(name)) |
関連記事です。
printについて、while not以外の詳しい説明はこちらをご覧ください。
Pythonに関する重要なトピック全般について学んでいきたいと考えておられる方には、次のリンクをお勧めします。