setsuki  2021/10/08更新

【ぱいそん】はじめました。忘備録④条件分岐【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と書くことができます。



タイトルとURLをコピーしました