トップページ -> Python入門 基礎編 -> 条件分岐をマスターしよう ①

条件分岐をマスターしよう! ①

今回は条件分岐について解説します. 条件分岐を使いこなせるようになると,条件Aを満たす場合は処理1 条件Bを満たす場合は処理2 それ以外の場合は処理3 のようなプログラムが書けるようになり.プログラミングの幅がぐっと広がります. まずは,条件式を書けるようになるために比較演算子について学びます.

比較演算子

  1. ==

    1つ目の比較演算子は == です. 左右のデータが等しいときに True となります. == は数値以外の比較にも使えます.
  2. !=

    2つ目は比較演算子 != です. 左右のデータが等しくないときに True となります. != は数値以外の比較にも使えます. ≠ を環境依存せずに記述しています.
  3. <

    2つ目の比較演算子は < です. 左のデータが右のデータより小さいときに True となります. 等しい場合もTrueとしたい場合は <= とします.
  4. >

    3つ目の比較演算子は > です. 左のデータが右のデータより大きいときに True となります. 等しい場合もTrueとしたい場合は >= とします.
比較演算子として == を使う理由は,代入演算子 = と混同しないためです. 代入演算子 = は右のデータを左に代入する 比較演算子 == は左右のデータが等しい場合にTrue となるため全くの別物です. 使い間違えないように気を付けましょう. == 以外は日常で使うものと同じため覚えやすいですね.

実際のプログラム

実際に比較演算子を使ってみましょう.


print(1==1)
print(1==2)
print(1<3)
print(1<3)
不等号
条件式を満たしている場合はTrue 満たしていない場合はFalse を返していますね.

比較演算子の理解ができたので条件分岐の書き方について解説します. 条件分岐は以下のように書きます.


if (条件式):
    (条件式を満たす場合の処理)
    (複数行の複雑な処理でもいいですよ)
条件分岐の書き方で重要なのが条件式の後ろの「ダブルコロン」と「インデント」の2つが重要になります. 一つ目の「ダブルコロン」ですが,if (条件式) の後ろに付け忘れると文法ミスとしてエラーになります. 慣れないうちは忘れてしまうことがあるので気を付けましょう. 2つ目はインデントです. Pythonでは半角スペース4つ(通常はtabキーで入力します)の「インデント」でまとめられた「インデントブロック」を 作り,条件を満たす場合の処理を記述します. Jupyter Notebookやエディターでは勝手にインデントを入れてくれたりしますが,インデントを間違えると 予期せぬ動作をしてしまうので気を付けるようにしましょう. それでは,実際のプログラムを見てみましょう. 入力を受け付け,入力が100より大きい場合は「100より大きい!」と出力するプログラムです.

a = int(input())
if a > 100:
    print("100より大きい!")
条件分岐1

条件分岐2
100より大きい場合は「100より大きい!」と表示され,そうでないときは何も表示されませんね. 今度は100より小さい場合や100と等しい場合も表示してみましょう. 以下のようにif は並べて書くことができます.

a = int(input())
if a > 100:
    print("100より大きい!")
if a == 100:
    print("100と等しい!")
if a < 100:
    print("100より小さい!")
条件分岐3
今度は入力がどの程度の大きさなのか大雑把に返してくれるプログラムを書いてみます. 1000より大きいか 100より大きいか 10より大きいか 0より大きいか で判定するようにします.

a = int(input())
if a > 1000:
    print("1000より大きい!!")
if a > 100:
    print("100より大きい!")
if a > 10:
    print("10より大きい")
if a > 0:
    print("0よりは大きいよ…")
せっかくなので大きい数字を入力してあげましょう. 1000より大きい!!と出力されると嬉しいですね. 10000を入力してみます.すると…
条件分岐4
たしかに 「1000より大きい!!」 とは出力されたのですが,「0よりは大きいよ…」というなんとも微妙な反応まで 出力されてしまいました. これを回避するためにelif(else ifの略)というものが用意されています. elif は自分より上の条件を満たしていない場合のみ条件を確認します. 実際のプログラムを見てみましょう.

a = int(input())
if a > 1000:
    print("1000より大きい!!")
elif a > 100:
    print("100より大きい!")
elif a > 10:
    print("10より大きい")
elif a > 0:
    print("0よりは大きいよ…")
条件分岐5
今度は 1000より大きい!! だけが表示されましたね. ところで,このプログラムでは0以下の数字を入力したときに何も表示されません. これでは寂しいので0以下の場合も何か表示させましょう. ここでは,上の条件をすべて満たさなかった場合の処理を記述するelseを使います.

a = int(input())
if a > 1000:
    print("1000より大きい!!")
elif a > 100:
    print("100より大きい!")
elif a > 10:
    print("10より大きい")
elif a > 0:
    print("0よりは大きいよ…")
else:
    print("0以下だよ…")
条件分岐6
最後に条件分岐についてまとめておきます. 比較演算子 特に == に注意しよう
条件式の後の「ダブルコロン」を忘れずに
処理を「インデントブロック」でひとまとめにする
if ~: もし ~ ならば
else if ~: それ以外の場合でもし ~ ならば
else: それ以外の場合は
条件分岐について理解できたので,次は演習問題を解いてみましょう. 少し難しいですが,今までの知識で解ききることができますよ.

演習問題

身長(m)と体重(kg)の入力を受け,BMIと肥満度を返すプログラムを書いてみましょう. BMIの計算式と肥満度の対応表を以下の通りです.
BMI = 体重(kg) ÷ (身長(m))^2
BMI 25以上: 肥満
BMI 18.5~25未満: 標準
BMI 18.5未満: やせ型

演習問題のヒント

今回は少しやることが多くて難しいですね. やるべき処理を一から順に考えていくとプログラムが書きやすいですよ. どういう流れになるのか考えてみましょう.

  1. 身長を受け取る
  2. 体重を受け取る
  3. BMI を計算する
  4. BMI を出力する
  5. BMI に応じて条件分岐で結果を表示する
以上のような流れでプログラムを書いてみたらいかがでしょうか?

演習問題の解答例


height = float(input()) # floatに変換するのを忘れずに!
weight = float(input())
BMI = weight/(height**2) # べき乗は ** を使います
print(BMI)
if BMI >= 25:
    print("肥満です")
elif BMI >= 18.5:
    print("標準体型です")
else:
    print("やせ型です")
こだわって出力を整えたい場合は以下のコードを参考にしてみてください.

height = float(input()) # floatに変換するのを忘れずに!
weight = float(input())
BMI = weight/(height**2) # べき乗は ** を使います
if BMI >= 25:
    print("BMIは" + str(BMI) + ":肥満です")
elif BMI >= 18.5:
    print("BMIは" + str(BMI) + ":標準体型です")
else:
    print("BMIは" + str(BMI) + ":やせ型です")
str関数を使って文字列型に変換したBMI と文字列を結合して表示してみました. 色々な値を入力してプログラムが正常に動作するか確かめてみてください.

今回は条件分岐について学びました. 今回の内容は少し難しかったかもしれませんが,条件分岐はよく使いますので, プログラムをたくさん書きながら慣れていきましょう. 次回は数値の比較以外の色々な条件式の表現について解説していきたいと思います.

<- 前へ戻る 【目次に戻る】 次へ進む ->

s