【ぱいそん】はじめました。忘備録④条件分岐【Python】
引き続き以下の動画で勉強中
条件分岐
条件式の結果によって処理を分岐するif文
if ”条件式”: "Trueの場合の処理"
Trueの時の処理を書く前に、半角スペース4つのインデントを入れます。
もしも、インデントを入れないと、IndentationError: expected an indented blockというエラーが出ます。
※半角スペースを4回押すのが面倒ならTabキーを押すと1度で半角スペース4つ分のスペースを空けてくれます。
print(1) if "条件式": print(2) print(3)
上のコードの場合、条件式がTrueであれば、
print(1) if "条件式": print(2) print(3)
が実行され、Faleseなら
print(1) print(3)
が実行されます。
Faleseの場合の処理もできるif~else文
if a>=80: #Trueの場合の処理 print("合格") else: #Falseの場合の処理 print("残念")
このコードの場合、
条件式がTrueなら、合格が、Falseなら残念が出力されます。
ifとelseの位置がそろってない場合は、SyntaxError: invalid syntaxエラーが発生します。
下はエラーになるコード
if a>=80: #Trueの場合の処理 print("合格") else: #Falseの場合の処理 print("残念")
Pythonでは、インデントが重要な意味を持ちます。
a=90 #if文ここから if a>=80: #Trueの場合の処理 print("合格") else: #Falseの場合の処理 print("残念") #if文ここまで print("終了!")
上のコードでは、Trueの場合、
a=90 #if文ここから if a>=80: #Trueの場合の処理 print("合格") #if文ここまで print("終了!")
Falseの場合
a=90 #if文ここから if a>=80: #Falseの場合の処理 print("残念") #if文ここまで print("終了!")
が実行されます。
さらに条件を追加するelif文
ifとelseの間にさらに条件を追加する場合にelif文を使います。
※他のプログラミング言語の、else if文の事をPythonではelif文と言います。
if a>=80: #80以上の場合 print("合格") elif a>=50 #50~79の場合 print("もう少し") else: #それ以外(49以下) print("残念")
このコードの場合、a>=80の場合は
if a>=80: #80以上の場合 print("合格")
が実行され、aが50~79の場合は、
if a>=80: #80以上の場合 print("合格") elif a>=50 #50~79の場合 print("もう少し")
が実行され、それ以外の場合は
if a>=80: #80以上の場合 print("合格") elif a>=50 #50~79の場合 print("もう少し") else: #それ以外(49以下) print("残念")
が実行されます。
このように、上から順にコードが実行されていく形になります。そのためelif文の条件式は、a>50でよいことになります。
条件式を組み合わせるAND条件
1 < a and a < 10
この条件式のどちらもTrueならTrueを、それ以外はどちらか一方がTrueであってもFalseを出力します。
上の条件式を使ってif文を作ってみました。
if 1 < a and a < 10: print("True") else: print("False")
例えばaが5の場合、1<5かつ5<10なので、Trueが出力されます。
a=5 if 1 < a and a < 10: print("True") else: print("False")
次にaが0の場合、aは、1<0ではないため、0<10であってもFalseが出力されます。
a=0 if 1 < a and a < 10: print("True") else: print("False")
さらに、aが15の場合、aは1<15ですが、15<10ではないため、こちらもFalseになります。
a=15 if 1 < a and a < 10: print("True") else: print("False")
上のコードをそれぞれ実行して、出力される結果を見てみてください。
条件式の組み合わせOR条件
a < 10 or b < 10
orの場合は、どちらか一方でもTrueなら、Trueを、すべてがFalseの時はFalseを返します。
例えば、aが5でbが6の時、5<10であり、6<10なのでTrueを返します。
a=5 b=6 if a < 10 or b < 10: print("True") else: print("False")
さらに、aが5でbが15の時、5<10でTrue、15<10でFalseとなりますが、aの値がTrueなのでTrueを返します。
a=5 b=15 if a < 10 or b < 10: print("True") else: print("False")
また、aが15でbが5の時も、15<10でFalse、5<10でTrueとなりますが、bの値がTrueなため、Trueを返します。
a=15 b=5 if a < 10 or b < 10: print("True") else: print("False")
最後に、aが15でbも15の時、15<10で、15<10なので、どちらもFalseになるため、Falseを返します。
a=15 b=15 if a < 10 or b < 10: print("True") else: print("False")
TrueとFalseを逆転させるnot
if not x: print("x=False") else: print("x=True")
xがTrueの時else以降が実行され、xがFalseの時if文のコードが実行されます。
条件式を作ってみました。
x=11 if not x>=10: print("x=False") else: print("x=True")
この場合x=11で、11>=10のため、条件式はTrueとなり、notがあるために、出力されるのは、x=Trueになります。
では、x=5の場合はどうなるかと言うと、5>=10のため条件式はFalseになります。
notがあるので、出力結果は、x=Falseとなります。
x=5 if not x>=10: print("x=False") else: print("x=True")
条件式を組み合わせる
sex="男" age=60 if sex=="男": if 35<=age and age<50: print("中年オジサンです") else: #何も書くことがない時 pass else: print("女性です")
このように、if文の中に、if文を入れることをネスト (入れ子構造) と言います。
また、特に、式を書かない場合は、passと書くことができます。