真偽値と比較が分かってきたので、今度は条件で処理を切り替えてみましょう。Pythonでは if を使うと、条件に応じて実行する内容を変えられます。
たとえば「点数が90点以上なら合格、そうでなければ不合格」のように、条件によって実行する処理を切り替えられます。今回は if・else・elif(多段分岐)の使い方をブロックと Pythonコードで確認します。

まずはPycoBlocksを開こう
下のPycoBlocksで直接作業するか、別タブで開き、生成されるPythonコードを見ながら進めてください。今回は「条件」カテゴリのifブロックを使います。
if文の基本
if文は「条件が True なら、下の処理を実行する」という仕組みです。条件が False なら、その処理は実行されません。インデント(字下げ) が if の中かどうかを表します。同じ字下げ量の行が「ifのブロック」として扱われます。
x = 3
if x > 0:
print("OK")
解説:x > 0 の条件が True のときだけ、if のブロック内が実行されます。条件が False のときは何も表示されません。
| 用語 | 意味 | 例 |
|---|---|---|
if |
条件が True のとき処理を実行するキーワード | if x > 0: |
else |
if の条件が False のとき実行する処理を書くキーワード |
else: |
elif |
「そうでなく、もし〜なら」という追加の分岐を書くキーワード | elif x == 0: |
| インデント | コードの字下げ。Pythonでは4スペースが標準。ifの中かどうかをインデントで表す | print("OK") |
ステップ1:正の数だけ表示しよう
まずは整数を入力して、0より大きいときだけ OK を表示する分岐を作ります。

x = int(input("数を入力してください"))
if x > 0:
print("OK")
ステップ2:elseで2択にしよう
ifに加えて else を入れると、条件がFalseのときの処理も書けます。

x = int(input("数を入力してください"))
if x > 0:
print("OK")
else:
print("NG")
解説:else: を付けると条件が False のとき(0以下のとき)の処理も書けます。if と else で必ずどちらかが実行されます。
ステップ3:elifで3段階以上に分岐しよう
3段階以上の分岐には elif(「そうでなくもし〜なら」)を使います。PycoBlocksでは + ボタンを1回押すと else が追加され(if-else 完成)、さらに押すと elif ブランチが追加されます。各ブランチの右端にある赤い − ボタンで不要な分岐を個別に削除できます。「分岐」カテゴリには「if-elif-else」のセット済みブロックもあるのでそのまま使えます。

s = int(input("点数を入力してください"))
if s >= 90:
print("A")
elif s >= 70:
print("B")
else:
print("C")
解説:ブロックの + ボタンで elif ブランチを追加すると、Pythonコードに elif が直接出力されます。条件は上から順番に評価され、最初に True になった分岐だけが実行されます。
コーディングモードで書いてみよう
if文は、条件式を読む順番で設計するのがコツです。上から順に判定されるため、境界値(90点ちょうどなど)を先に決めておくとミスを減らせます。
score = int(input("点数を入力してください"))
if score >= 90:
print("A")
elif score >= 70:
print("B")
else:
print("C")
PycoBlocksの elif ブロックは直接 elif を生成します。ブロックと生成コードが1対1に対応するため、設計と実装を同時に確認できます。条件の順序を意識して設計してください。
複数条件を組み合わせる(and / or)
and を使うと「〜かつ〜」という複数の条件を1行で書けます。詳しくは次の章で学びますが、if文と組み合わせて使えます。
x = 50
if x >= 0 and x <= 100:
print("0以上100以下です")
演習課題
課題7-1:正・負・ゼロを判定しよう
整数を入力し、正の数なら 正の数です、負の数なら 負の数です、0なら ゼロです と表示してください。elif を使います。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

x = int(input("整数を入力してください"))
if x > 0:
print("正の数です")
elif x < 0:
print("負の数です")
else:
print("ゼロです")
解説: elif は「それ以外でもし〜なら」の意味です。3つ以上の分岐には if-elif-else の形を使います。条件は上から順番に評価され、最初に True になった分岐だけが実行されます。
課題7-2:点数でA〜D評価を表示しよう
点数を入力し、90点以上ならA、70点以上ならB、50点以上ならC、それ以外はD と表示してください。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

score = int(input("点数を入力してください"))
if score >= 90:
print("A")
elif score >= 70:
print("B")
elif score >= 50:
print("C")
else:
print("D")
解説: elif は上の条件が False のときだけ評価されます。score = 75 の場合、最初の score >= 90 は False、次の score >= 70 が True になるため "B" が表示されます。条件の順番が重要です。
課題7-3:年齢で料金区分を表示しよう
年齢を入力し、0〜12歳は子供料金: 100円、13〜17歳は学生料金: 200円、18〜64歳は大人料金: 500円、65歳以上はシニア料金: 300円 と表示してください。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

age = int(input("年齢を入力してください"))
if age <= 12:
print("子供料金: 100円")
elif age <= 17:
print("学生料金: 200円")
elif age <= 64:
print("大人料金: 500円")
else:
print("シニア料金: 300円")
解説: 境界値(12, 17, 64)に注意してください。elif age <= 17 は「前の条件(age <= 12)が False」のときしか評価されないため、実質 13〜17歳の範囲を指します。このような「上限を順に絞る」書き方はよく使うパターンです。
課題7-4:3つの数から最大値を求めよう(組み込み関数禁止)
a=7, b=12, c=5 の3つの変数を使い、max() を使わずに if-elif を使って最大値を求めて表示してください。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

a = 7
b = 12
c = 5
if a >= b and a >= c:
largest = a
elif b >= c:
largest = b
else:
largest = c
print("最大値:", largest)
解説: 「aがbより大きく、かつcより大きいならaが最大」という論理です。and を使って2つの条件を同時に確認しています。Pythonには max(a, b, c) という組み込み関数がありますが、アルゴリズムの理解のためにifで実装することが大切です。
課題7-5:FizzBuzz(1問分)を実装しよう
整数を1つ入力し、3の倍数ならFizz、5の倍数ならBuzz、3と5両方の倍数ならFizzBuzz、それ以外はその数をそのまま表示してください。条件の順番に注意しましょう。
▶ 模範解答と解説を見る
ブロックの組み合わせ例:

n = int(input("整数を入力してください"))
if n % 15 == 0:
print("FizzBuzz")
elif n % 3 == 0:
print("Fizz")
elif n % 5 == 0:
print("Buzz")
else:
print(n)
解説: FizzBuzzは有名なプログラミング面接問題です。ポイントは「FizzBuzz(15の倍数)を最初に判定する」こと。先に n % 3 == 0 を書くと、15の倍数でも "Fizz" と表示されてしまいます。forループを学んだあとは1〜100で実装してみましょう。
まとめ
ifで条件がTrueのときだけ処理を実行できますelseを使うとFalseの場合の処理も書けますelifを使うと3段階以上の分岐を簡潔に書けます(PycoBlocksの + ボタンで追加。分岐カテゴリにセット済みブロックもあります)
次は、条件を組み合わせる論理演算(and / or)を学びます。→ Python × 入門 | #08 論理演算を使おう