Python の if not と or を組み合わせた時は条件に注意
Pythonで以下のようなif not 条件1 or 条件2
を実行する。
def sleep_in(weekday, vacation): if not weekday or vacation: return True else: return False
すると以下のような結果となる。
weekday | vacation | 実行結果 |
---|---|---|
True | True | True |
True | False | False |
False | True | True |
False | False | True |
ここでvacation
がnot
の判定になっていないことに疑問を感じた人向けの内容となるが、
これはnot
がweekday
のみに有効になっているためである。
判定を分解すると以下のようになる。
not 条件1
条件2
もし条件2
もnot
で判定させたければ、if not 条件1 or not 条件2
というように都度not
を付けるようにする。