Pythonの基本構文である「 Pythonの条件分岐 if文 」に関して、現役エンジニアである筆者が解説いたします。分かりやすく説明できるように心がけ、理解を助ける図解を用いて説明しました。
この記事を読めば、Pythonの条件分岐 if文 を網羅している内容を学べると思います。下記目次から該当の項目に飛べます!
条件分岐 if文、else、elifの書き方
if文の書き方
プログラミングでは、「ある条件に当てはまるときだけこの処理を実行したい」という場面がたくさん出てきます。日常生活でも同じだとおもうのですが、そういった時に使う基本文法が、条件分岐と呼ばれるテクニックです。
上記の例では、お金が5万円あるので、焼き肉に行きたいみたいですね。ではこの場合をプログラムに置き換えてみましょう。
# 所持金として変数「 money 」を用意
money = 50000
if money == 50000:
print("お金が5万円あるので焼き肉に行く")
# 実行結果
お金が5万円あるので焼き肉に行く
このような形で、条件に一致した場合のみ、処理を実行する事が出来るのが「 if文 」です。では上記の例で5万円ではなく所持金が0円だった場合はどんな結果になるでしょうか。
# 所持金として変数「 money 」を用意
money = 0
if money == 50000:
print("お金が5万円あるので焼き肉に行く")
# 実行結果
条件に一致しないため、実行結果は何も表示されませんでした。
if文のルール
if文を書く場合は、おさえておかなければいけないルールがあります。Pythonはコードの範囲の区別(スコープという)をインデント(半角スペース1つの意味)で判断しています。
if文を書く際は、処理部分の記述を書くときインデントを「 4つ分 」空ける必要があります。このインデントによって、if文の条件部分なのか、処理部分なのかを判別しています。
そして、忘れがちなのはif文の条件文の後ろに「 コロン 」を記述する事です。
if文の代表的なエラー
守らないと以下のようにエラーになってしまいます。以下はコロンを記述忘れた場合です。ちなみに「 SyntaxError 」は簡単に言うと構文エラーです。タイプミスなどでも良く目にするエラーです。
money = 50000
if money == 50000
print("お金が5万円あるので焼き肉に行く")
# 実行結果
if (money == 50000)
^
SyntaxError: invalid syntax
以下は、インデントのルールを守らなかった場合です。
money = 50000
if money == 50000:
print("お金が5万円あるので焼き肉に行く")
# 実行結果
print("お金が5万円あるので焼き肉に行く")
^
IndentationError: expected an indented block
elseの書き方
上記が主なif文の使い方でしたが、これではお金が無い場合の処理が書けませんね。その時のために使うのが「 else 」です。
では、上記をプログラムにしてみましょう。
money = 10000
if money >= 10000:
print("ゲームに課金する")
else:
print("諦める")
# 実行結果
ゲームに課金する
money = 1000
if money >= 10000:
print("ゲームに課金する")
else:
print("諦める")
# 実行結果
諦める
これでお金が無い時の処理を実装することができました。
elifの書き方
上記を見て、プログラムを作成しようと考えると、ちょっと複雑に見えると思います。この場合は「 elif 」を使用して実装します。
money = 21000
if money >= 20000:
print("彼女にプレゼントが買える!!飲み会もいける!")
elif money >= 10000:
print("彼女にプレゼント買えない。飲み会はいける!")
else:
print("飲み会もいけない。")
# 実行結果
彼女にプレゼントが買える!!飲み会もいける!
money = 15000
if money >= 20000:
print("彼女にプレゼントが買える!!飲み会もいける!")
elif money >= 10000:
print("彼女にプレゼント買えない。飲み会はいける!")
else:
print("飲み会もいけない。")
# 実行結果
彼女にプレゼント買えない。飲み会はいける!
money = 9999
if money >= 20000:
print("彼女にプレゼントが買える!!飲み会もいける!")
elif money >= 10000:
print("彼女にプレゼント買えない。飲み会はいける!")
else:
print("飲み会もいけない。")
# 実行結果
飲み会もいけない。
論理演算子を条件式で使用する
論理演算子を使用して条件を指定する事も出来ます。論理演算に関しては以下の記事で解説していますので、分からない場合はこちらをご覧ください。
andを使用したif文
それでは、論理演算子である「 and 」を使用して、if文を書いてみます。変数「 num 」に数値を代入し、その数値が範囲内であれば、処理を実行するというプログラムを書いていきます。
num = 15
# すべての条件が成り立つ場合にのみ処理を行う(変数numの値が11~29)
if 10 < num and num < 30:
print("変数numは10より大きく、30より小さいです!")
# 実行結果
変数numは10より大きく、30より小さいです!
orを使用したif文
次に「 or 」を使用したif文を作成していきます。下記は変数「 num 」の値がifの条件式に一つでも一致すれば「 True 」となり処理が実行されるプログラムです。
num = 10
# 1つでも条件が成り立てば処理を行う(変数numの値が10または30)
if num == 10 or num == 30:
print("変数numは10または30です")
# 実行結果
変数numは10または30です
入れ子構造のif文
入れ子構造になっているif文に関して解説していきます。入れ子構造とは、if文の中にif文を書くことを言います。それでは、以下の要件に従ってプログラムを書いていきます。
fruits_available = True # フルーツ盛り合わせがある場合はTrue、ない場合はFalseとして設定する
fruit_set_price = 1800 # フルーツ盛り合わせの価格を設定する
if fruits_available:
print("フルーツ盛り合わせがあるので買いたいと思います。")
if fruit_set_price < 2000:
if fruit_set_price <= 1000:
print("フルーツ盛り合わせの価格が1000円以下なので2つ買います。")
else:
print("フルーツ盛り合わせの価格が2000円未満なので1つ買います。")
else:
print("フルーツ盛り合わせの価格が2000円以上なので買いません。")
else:
print("フルーツ盛り合わせがないので買いません。")
# 実行結果
フルーツ盛り合わせがあるので買いたいと思います。
フルーツ盛り合わせの価格が2000円未満なので1つ買います。
何も処理を実行しない「 pass 」
処理部分に「 pass 」と記述する事で、if文の条件式に一致している場合でも、何も処理されないでプログラムが終了します。
pa = 55
if pa == 55:
pass
# 実行結果
ちなみに「 pass 」も何も書かない場合はエラーになります。
pa = 55
if pa == 55:
# 実行結果
File "b.py", line 11
^
SyntaxError: unexpected EOF while parsing
ループ中に適用できるif文1「 continue 」「 break 」
for文などのループ中のみに適用できるのが「 continue」「 break 」です。
プログラムを中断させる break 文
「 break 」は条件に一致した場合に、ループ処理を止めるif文です。以下の例は、for文で数値「 1 ~ 5 」まで出力するプログラムですが、「 break 」の条件である「 3になったら終了 」により、プログラムを止めています。明示的にプログラムを中断したい場合に使用します。
atas = [1, 2, 3, 4, 5]
for data in range(datas[0], datas[4] + 1):
print(data)
if data == 3:
print("dataが3になったので終了します")
break
# 実行結果
1
2
3
dataが3になったので終了します
プログラムをスキップする continue文
「 continue」は、for文などのループ中に使用できるif文で、条件に一致した場合、処理をスキップする事が出来ます。明示的に処理をスキップさせてい場合に使用します。
datas = [1, 2, 3, 4, 5]
for data in range(datas[0], datas[4] + 1):
print(data)
if data == 3:
print("dataが3なのでスキップします")
continue
# 実行結果
1
2
3
dataが3なのでスキップします
4
5
if文を1行で書く場合
if文を1行で書くことも出来ます。しかし、現場では読みやすいコードが求められるため、簡略化したコードはあまり歓迎されない傾向にある事は念頭に置きましょう。
num_1 = 10
num_2 = 10
print("true") if num_1 == num_2 else print("false")
# 実行結果
true
以上となります。お読みいただきありがとうございました。
コメント