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節)
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」ファイルは、この動画で使用したものです。
Python入門一覧
- Python入門 クラスの継承とオーバーライド(動画あり)
- Python入門 オブジェクト指向について、クラスの作り方(動画あり)
- Python入門 lambda関数の使い方、map関数の使い方(動画あり)
- Python入門 位置引数、キーワード引数、デフォルト引数、便利な引数の使い方(動画あり)
- Python入門 グローバル変数とローカル変数(動画あり)
- Python入門 モジュールのインポートとrandomモジュール(動画あり)
- Python入門 関数の定義方法(動画あり)
- Python入門 内包表記(動画あり)
- Python入門 zip関数(動画あり)
- Python入門 for in文の活用(動画あり)
- Python入門 for in文の基本(動画あり)
- Python入門 三項演算子(動画あり)
- Python入門 if文の使い方2 while文の使い方(動画あり)
- Python入門 if文の使い方(動画あり)
- Python入門 浅いコピーと深いコピー(動画あり)
- Python入門 参照渡し(動画あり)
- Python入門 集合(動画あり)
- Python 入門 辞書(動画あり)
- Python 入門 タプルについて(動画あり)
- Python入門 リストのメソッド(動画あり)
- Python入門 リストのスライス(動画あり)
- Python入門 リスト
- Python入門 BMI課題 (動画あり)
- Python入門 文字列の連結とフォーマット1(動画あり)
- Python入門 文字列のフォーマット2(動画あり)
- Python入門 エスケープと型変換とinput()の使い方(動画あり)
- Python入門 pep8(動画あり)
- Python入門 変数の練習(動画あり)
- Python入門 変数(動画あり)
- Python入門 文字列(動画あり)
- Python入門 演算子(動画あり)
- Python入門 Python をはじめよう! (動画あり)
コメントを投稿するにはログインしてください。