Python入門 if文の使い方2 while文の使い方(動画あり)

if文で論理演算子(ブール演算)を活用

if文を使う時に複数の条件を比較したい場合があります。
Pythonではそのような場合、論理演算子(ブール演算)を使う方法と、場合によっては、比較演算子を複数使う方法があります。

論理演算子には次の3つがあります。

  • 論理積(かつ): and
  • 論理和(または): or
  • 否定(でない): not

論理演算子には優先順位がありますので、注意してください。
and の方が or より優先されます。
or を優先したい場合は、()で囲みます。

論理積 (and)

andは論理積を返します。

num = 19
if 17 < num and num < 20 :
  print("選挙権はあるが酒は飲めない")
elif num < 18 :
  print("未成年")
else:
  print("成人")

選挙権はあるが酒は飲めない

比較演算子を使った方法

論理積を使わずに、比較演算子を複数使うことで、
上の例のコードと同じ結果になります。

num = 19
if 17 < num < 20:
  print("選挙権はあるが酒は飲めない")
elif num < 18 :
  print("未成年")
else:
  print("成人")

結果
選挙権はあるが酒は飲めない

論理和(or)

orは論理和を返します。

age = 20
sex = 'man'
if age < 11 or sex == 'women' :
  print('女性専用車両に乗車可能')
else:
  print('女性専用車両に乗車不可能')

結果
女性専用車両に乗車不可能

否定(not)

notは値の否定を返します。
if notは結果が偽の場合Trueを返します。

num = 100
if not num == 20:
  print("成人式ではない")

結果
成人式ではない

while文

whileを使うとコードのブロックを何回も繰り返すことができます。
while節のコードはwhile文の条件式がTrueの間実行されます。

while 条件式(TrueかFalseに評価される式):
次の行に字下げしたコード(while節)

While文はif文と似ていますが、振る舞いが違います。

  • if文では、比較条件がTrueなら一度だけif節が実行されます
  • while文では、比較条件がTrueの間何度もwhile節が実行されます

以上のことから、while文は何らか比較条件がFalseになる仕組みを作る必要があります。
そうしないと、プログラムは無限ループしてしまいます。

if文とwhile文の違いを確認

次の例では、条件がTrueだったら「Hello!」と書き出すコードをif文とwhile文で書いて違いを確認しています。

if文の例

if文のコード例

# if文
spam = 0
if spam < 5:
  print("Hello!")

結果
Hello!

while文の例

while文のコード例

# while文
spam = 0
while spam < 5:
  print("Hello!")
  print(spam)
  spam += 1

結果
Hello!
0
Hello!
1
Hello!
2
Hello!
3
Hello!
4

break文

プログラムの実行をwhileループから抜け出す手っ取り早い方法が用意されています。
プログラム実行がbreak文に到達すると、即座にwhile文から向け出すことができます。

break文の例
「あなたの名前を入力してください」と言われたら、「あなたの名前を入力してください」と入力しない限り何度も聞かれます。

while True:
  print('あなたの名前を入力してください')
  name = input()
  if name == 'あなたの名前':
    break
print('どうも!')

結果
あなたの名前を入力してください
Tahara
あなたの名前を入力してください
Yamada
あなたの名前を入力してください
あなたの名前
どうも!

continue文

continue文もループの中で使用します。プログラムがcontinue文に到達すると即座にループの先頭に戻り、ループ条件式を再評価します。

条件が成り立つとcontinueは差し戻す。
条件が成り立たないとcontinueに当たらないので先に進む。

簡単なユーザー認証とパスワード認証の例
(注)学習用サンプルですから、実用で使うセキュリティレベルのものではありません。

while True:
  print('あなたはだれ?')
  name = input()
  if name == '':
    continue
  print('やあ、{}パスワードはなに?'.format(name))
  password = input()
  if password == '1234':
    break
print('認証した')

結果
あなたはだれ?
tahara
やあ、taharaパスワードはなに?
1234
認証した

参考になった書籍

プログラミングを少しでも経験がありPython の文法を学習する場合は、「入門 Python 3」が良いと思います。長く使えます。

「退屈なことはPython にやらせよう」はオブジェクト指向の解説がないです。代わりにPythonを使った便利な実例が初心者には嬉しい内容です。正規表現から、簡単なスクレイピング 、画像操作などあります。ただし、中級者以上には少し物足りないかもしれません。

Pythonサンプルのダウンロード

ここでダウンロードする「while.ipynb」ファイルは、この動画で使用したものです。

while.ipynb

Python入門一覧