サイトアイコン 天文学者のpython・音楽・お料理レシピ

python入門講座 | and、or、not演算子を使ってみよう(複数条件処理に用いるbool演算子)[第20回]

「条件1かつ条件2」、「条件1または条件2」、「条件1ではない」など幅広い分岐処理を実装できます!

Ciao!みなさんこんにちは!このブログでは主に
(1)pythonデータ解析,
(2)DTM音楽作成,
(3)お料理,
(4)博士転職
の4つのトピックについて発信しています。

今回は「アラサーOLのためのpython入門講座」です!この講座では、プログラミング初心者アラサーOLのMi坊さんに、pythonを学習する上でのアドバイスを行います!「パソコンもプログラミングも初心者だけど、プログラミングができるようになりたい!」という方のためにstep-by-stepで解説していきます。

今日はbool演算子と呼ばれるand・or・notについて解説します!複数の条件を処理する場合に使います。例えば「条件1かつ条件2を満たす」、「条件1または条件2を満たす」、「条件を満たさない」といったことを判定するときに使います。これらもPythonプログラミングで頻出の処理なのでマスターしましょう!

この記事を読めば、実例や練習問題を通してPythonでの複数条件の処理方法を習得することができます。ぜひ最後までお付き合いください!

Kaiko

この記事はこんな人におすすめ

  • 初心者だけどpythonを始めた!
  • pythonの基本的な使い方を知りたい!
  • 独学で学んだpythonの知識を整理したい!

Abstract | and、or、not演算子で複数条件を処理する

and、or、not演算子を使うと複数の条件を処理したり、条件を反転するなどより複雑な分岐処理をすることができます。and演算子は複数の条件をすべて満たすときに処理を行うためのものです。日本語では「かつ」に相当します。or演算子は複数の条件のいずれか1つ以上を満たすときに処理を行うものです。日本語では「または」に相当します。not演算子はある条件を満たすか否かの判定を反転させます。日本語では「〜でない」に相当します。これらの演算子を用いることで条件分岐を表現する幅が広がります。使い方を覚えましょう !



Method | and, or, notを用いた複数条件処理

and, or, not演算子の使い方を解説します。実際に手を動かしながら学んでいきましょう!Jupyter Notebookを立ち上げてコーディングしながら読み進めてください。

準備 | python notebookの新規作成

まずはpython notebookを用意しましょう。いつものpython_practiceのディレクトリに「practice_bool_operator」という名前のpython notebookを作成してください。ターミナルを立ち上げて~/python_practiceに移動、jupyter notebookを起動し、ブラウザから新規→Python3でpython notebookを開いて、ファイル→リネームでファイル名を決定します。
もしやり方がわからなければ、過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」などで詳しく解説しているので、これらを見ながらやってみてください。

python notebookを起動したら、適宜Markdownセルに説明書きを加えながら下記の説明に沿ってコードを書いて実行していきましょう。Markdownセルやコードセルなどの用語やこれらの使い方は過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」を参照してください。練習問題の後にpython notebookの例を掲載します。もし書き方がわからなければそちらを見てください。



and演算子の使い方

まずはand演算子です。and演算子は以下のように書いて使います。

条件1 and 条件2

この演算子は条件1も条件2もTrueの場合にTrueを返し、それ以外の場合にはFalseを返します。日本語で「条件1かつ条件2」の「かつ」と同じ意味です。

例1-1: bool変数で挙動を確かめる

単純な例でand演算子の挙動を確認しましょう。and演算子の返り値をprint()文で出力する例です。以下を実行してみましょう。

# define two bool varialbles
cond1 = True
cond2 = True

# use and operator
print(cond1 and cond2) # True

cond1もcond2もTrueなので結果はTrueとなります。次にどちらかをFalseにしてみましょう。以下を実行してください。

# define two bool varialbles
cond1 = True
cond2 = False

# use and operator
print(cond1 and cond2) # False

今度はcond2がFalseなので、and演算子の結果はFalseとなります。

条件が3つ以上の場合も同様です。各条件の間にand演算子を置きます。以下を実行してみましょう。

# define two bool varialbles
cond1 = True
cond2 = True
cond3 = True

# use and operator
print(cond1 and cond2 and cond3) # False

cond1もcond2もcond3もTrueなので、and演算子の結果はTrueとなります。

例1-2: if文と組み合わせる例

より実戦的な例を扱ってみましょう。nが3の倍数かつ2の倍数のときにアホになり、それ以外の場合は通常のテンションで数字を出力する例を考えます。以下を実行しましょう。

# define a target number
n_trg = 12

# define two divisor
n_div1 = 3
n_div2 = 2

# judge if one shoud be fool
if(n_trg % n_div1 == 0 and n_trg % n_div2 == 0):
    print(' Say %d foolishly!' % (n_trg))
else:
    print(' Just say %d.' % (n_trg))

n_trgが12で、これはn_div1 (== 3)でもn_div2 (== 2)割り切れるのでアホになります。「Say 12 foolishly!」と出力されます。

n_trgを9に変更して同様の処理を行ってみましょう。以下を実行してください。

# change the target number
n_trg = 9

# judge if one shoud be fool
if(n_trg % n_div1 == 0 and n_trg % n_div2 == 0):
    print(' Say %d foolishly!' % (n_trg))
else:
    print(' Just say %d.' % (n_trg))

今度はn_trgが9で、これはn_div2では割り切れないので通常のテンションを保ちます。「Just say 9.」と出力されます。



or演算子の使い方

次はor演算子です。or演算子は以下のように使います。

条件1 or 条件2

条件1と条件2のうち少なくとも1つがTrueならばTrueを返します。条件1と条件2が両方ともFalseの場合にはFalseを返します。日本語の「条件1または条件2」の「または」と同じです。

例2-1: bool変数で挙動を確かめる

単純な例でor演算子の挙動を確認しましょう。or演算子の返り値をprint()文で出力する例です。以下を実行してみましょう。

# define two bool varialbles
cond1 = True
cond2 = True

# use and operator
print(cond1 or cond2) # True

cond1もcond2もTrueなのでTrueが出力されます。

どちらかをFalseにしてor演算子にかけてみましょう。以下を実行してください。

# define two bool varialbles
cond1 = True
cond2 = False

# use and operator
print(cond1 or cond2) # True

cond1がTrueなのでor演算子の結果はTrueとなります。

例2-2: if文と組み合わせる例

実戦的な例を扱ってみましょう。nが3の倍数または2の倍数のときにアホになり、それ以外の場合は通常のテンションで数字を出力する例を考えます。以下を実行しましょう。

# define a target number
n_trg = 8

# define two divisor
n_div1 = 3
n_div2 = 2

# judge if one shoud be fool
if(n_trg % n_div1 == 0 or n_trg % n_div2 == 0):
    print(' Say %d foolishly!' % (n_trg))
else:
    print(' Just say %d.' % (n_trg))

n_trgが8で、これはn_div2 (== 2)で割り切れるのでアホになります。「Say 8 foolishly!」と出力されます。

n_trgを7に変えてやってみましょう。以下を実行してください。

# change the target number
n_trg = 7

# judge if one shoud be fool
if(n_trg % n_div1 == 0 or n_trg % n_div2 == 0):
    print(' Say %d foolishly!' % (n_trg))
else:
    print(' Just say %d.' % (n_trg))

n_trgはn_div1でもn_div2でも割り切れないので通常のテンションです。「Just say 7.」と出力されます。



not演算子の使い方

not演算子は条件式の結果を反転させる演算子です。以下のように使います。

not 条件

条件がTrueならFalseを、逆ならTrueを返します。

例3-1: bool変数で挙動を確かめる

まずは単純な例でnot演算子の挙動を確認しましょう。not演算子の結果をprint()で出力します。以下を実行してみましょう。

# define a bool varialble
cond = True

# use and operator
print(not cond) # False

condはTrueなので、not演算子の結果はFalseとなります。

逆もやってみましょう。以下を実行してください。

# define a bool varialble
cond = False

# use and operator
print(not cond) # False

結果はTrueとなります。

例3-2: if文と組み合わせる例

実戦的な例です。実際のプログラミングでは変数のタイプを判定するときにnot演算子を使うことが多く、数値演算で使うことは稀です。ここでは変数のタイプ判定にnot演算子を組み合わせてみます。変数がNoneでない場合に変数の中身をprintする処理を行います。以下を実行してみましょう。

# define a str variable
var_str = 'hello'

# if the variable is not None print it
if(var_str is not None):
    print(var_str)

var_strには文字列helloが格納されておりNoneではないため、「hello」が出力されます。Noneの判定は等価演算子「==」ではなく「is」で行うことに注意してください。

例3-3: さらに実戦的な例(発展)

さらに実戦的な例をご紹介します。ただ、入門講座を超えた発展的な内容なので完全に理解できなくても構いません。

以下は関数のoptional引数を判定する例です。関数には明示的に与えなくても良いoptional引数を設定することができます。関数を呼び出すときにその引数を与えなければデフォルトの値で処理が行われます。特別な事情がない限りはその引数も使わないという場合には、デフォルト値としてNoneを格納しておくことがあります。引数が与えられたことを検知するために「is not None」で判定します。まず以下を実行して関数を定義してみましょう。

# define a function
def say_hello(var_str = None):
    # print hello
    print('Hello', end = '')
    
    # print var_str
    if(var_str is not None):
        print(' ', var_str, '.', sep = '')
    else:
        print('.')

この関数はvar_strがNoneでない場合には「Hello VAR_STR.」、Noneの場合には「Hello.」と出力します。

以下のように引数無しでこの関数を呼び出してみます。

# use the function without an optional argument
say_hello()

var_strがNoneになっているので「Hello.」と出力されます。

さらに、以下のように引数を与えて実行してみましょう。

# use the function with an optional argument
say_hello(var_str = 'Python')

今度はvar_strがNoneではなく”Python”ので「Hello Python.」と出力されます。

このように、optional引数にデフォルトでNoneを入れておいて、その引数が明示的に与えられた場合にのみ処理を行うというのは、実際にはファイル名が与えられた場合にデータを出力するなどに使います。処理の途中過程を出力するなど、必ずしもやる必要のない処理だけれども、場合によってはやりたいという場合に使えます。小技ですが覚えておくと便利です。



Result | 練習問題

最後に練習問題です。以下の処理を行うコードを書いてみてください!

  1. 変数n_trg, n_lim1, n_lim2をそれぞれ15, 3, 17という値で定義する
  2. and演算子を使って以下の処理を行う。
    1. n_trgがn_lim1以上かつn_lim2未満のとき「N_TRG is between N_LIM1 and N_LIM2」を出力し、
    2. そうでないときに「N_TRG is out of N_LIM1 and N_LIM2」を出力する。
      ただし、N_TRGはn_trgの値、N_LIM1はn_lim1の値とする。
  3. or演算子を使って以下の処理を行う。
    1. n_trgがn_lim1未満またはn_lim2以上のとき「N_TRG is out of N_LIM1 and N_LIM2」を出力し、
    2. そうでないときに「N_TRG is between N_LIM1 and N_LIM2」を出力する。
  4. 変数n_trgを1に変えて上記2と3の処理をやり直す。
  5. 変数str_varを’python’という文字列で定義する。
  6. not演算子を使い以下の処理を行う。
    1. str_varがNoneでないときに「Hello STR_VAR」を出力する。
      ただし、STR_VARはstr_varの中身とする。
  7. 変数str_varをNoneに変えて上記をやり直す。

練習問題の回答例

できたら回答例を確認しましょう!下の画面をスクロールすると回答例が見られます!回答例2は関数を使うため入門編を超えていますが実戦的な例として記載しました。参考にしてみてください。また、今回の記事で出てきた他のコードも載っているので参考にしてください!

練習問題おつかれさまでした!
今日はここまでです。Python Notebookを終了しておきましょう。もしPython Notebookを終了方法がわからなければ過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」の「Python Notebookの起動・終了方法」の章を参照してください!



Conclusion | まとめ

最後までご覧いただきありがとうございます!bool演算子(and, or, not)の使い方を紹介しました!if文に複数条件を盛り込むことができ、実戦的なPythonコーディングがでできるようになります!ぜひマスターしましょう!

以上「python入門講座 | and、or、not演算子を使ってみよう(複数条件処理に用いるbool演算子)」でした!
またお会いしましょう!Ciao!



References | 参考

以下の教科書を参考にして進めています!より詳しく学びたい方は購入して読んでみてください!

Pythonの参考教科書

モバイルバージョンを終了