Python入門 第7回:条件分岐(if・elif・else)

Python入門 第7回:条件分岐(if・elif・else) Python

はじめに

Pythonでは、条件によって処理を変えたい場面がよくあります。

たとえば、次のような場面です。

  • 18歳以上なら「成人です」と表示する
  • 点数が80点以上なら「合格」と表示する
  • パスワードが正しければログインを許可する

このような「条件に応じて処理を分ける」仕組みを、条件分岐といいます。

今回は、Pythonの条件分岐で使う基本構文と、条件を書くための演算子を学びます。

  • if
  • elif
  • else
  • 比較演算子(==!=><>=<=
  • 論理演算子(andornot

条件分岐とは?

条件分岐とは、ある条件が正しいかどうかによって、実行する処理を変えることです。

  • もし雨なら、傘を持っていく
  • もし点数が高ければ、合格と表示する
  • もしログイン済みでなければ、ログイン画面に進む

Pythonでは、この「もし〜なら」を if 文で書きます。


if文の基本

まずは一番基本的な if 文から見ていきましょう。

age = 20

if age >= 18:
    print("成人です")

実行結果

成人です

変数 age には 20 が入っています。if age >= 18: は「もし age が18以上なら、次の処理を実行する」という意味です。

条件が正しい場合だけ、インデントされた print("成人です") が実行されます。

if文の書き方

if 条件式:
    実行したい処理

1. 条件のあとにコロンを付ける

if age >= 18:

Pythonでは、if の行の最後に必ずコロン : が必要です。

2. 次の行はインデントする

if age >= 18:
    print("成人です")

if の中の処理は、字下げ(インデント)して書きます。通常は半角スペース4つがよく使われます。

3. 条件がFalseなら処理は実行されない

age = 15

if age >= 18:
    print("成人です")

この場合、15 >= 18 は成り立たないので、何も表示されません。


比較演算子とは?

条件分岐では「何と何を比べるか」がとても重要です。そのために使うのが比較演算子です。

演算子意味
==等しい
!=等しくない
>より大きい
<より小さい
>=以上
<=以下

==(等しい)

score = 100

if score == 100:
    print("満点です")

実行結果

満点です

== は、左と右が同じかどうかを調べます。

!=(等しくない)

name = "Tanaka"

if name != "Yamada":
    print("山田さんではありません")

実行結果

山田さんではありません

!= は「一致しない」という意味です。

> と <

num = 8

if num > 5:
    print("5より大きいです")

実行結果

5より大きいです

>= と <=

temperature = 25

if temperature >= 25:
    print("暑いです")

実行結果

暑いです

>= は「以上」、<= は「以下」です。

= と == の違いに注意

初心者がよく間違えるのが、=== の違いです。

= は代入

x = 10

これは「x に10を入れる」という意味です。

== は比較

if x == 10:
    print("xは10です")

これは「x が10と等しいかどうかを調べる」という意味です。2つはまったく意味が違うので、必ず区別しましょう。


else文を使う

条件が正しくないときの処理も書きたい場合は、else を使います。

age = 15

if age >= 18:
    print("成人です")
else:
    print("未成年です")

実行結果

未成年です

if の条件が True なら「成人です」、そうでなければ else の「未成年です」が実行されます。

if 条件式:
    条件がTrueのときの処理
else:
    条件がFalseのときの処理

elif文を使う

条件が2つではなく複数ある場合には、elif を使います。elif は「それ以外でもし〜なら」という意味です。

score = 75

if score >= 90:
    print("A評価")
elif score >= 70:
    print("B評価")
else:
    print("C評価")

実行結果

B評価
  • score >= 90False
  • score >= 70True
  • print("B評価") を実行
  • True になった時点で、それ以降の条件は判定しない

if、elif、else の流れ

if 条件1:
    処理1
elif 条件2:
    処理2
elif 条件3:
    処理3
else:
    どれにも当てはまらない場合の処理

条件は上から順番に判定され、最初に True になったものだけが実行されます。

判定の順番に注意しよう

score = 95

if score >= 70:
    print("B評価以上です")
elif score >= 90:
    print("A評価です")

実行結果

B評価以上です

95点でも、最初の score >= 70 がすでに True なので、elif score >= 90 までは進みません。

正しい書き方

score = 95

if score >= 90:
    print("A評価です")
elif score >= 70:
    print("B評価以上です")

数値の範囲を判定するときは、厳しい条件・大きい値の条件から先に書くのが基本です。


論理演算子とは?

複数の条件を組み合わせたいときに使うのが論理演算子です。

演算子意味
andかつ
orまたは
notではない

and の使い方

and は、両方の条件が True のときだけ True になります。

age = 20
has_ticket = True

if age >= 18 and has_ticket:
    print("入場できます")

実行結果

入場できます

age >= 18has_ticket の両方が True なので、メッセージが表示されます。片方でも False なら実行されません。

or の使い方

or は、どちらか一方でも True なら True になります。

weather = "雨"
have_umbrella = False

if weather == "雨" or have_umbrella:
    print("雨対策があります")

実行結果

雨対策があります

weather == "雨"True なので、もう一方が False でも全体は True です。

not の使い方

not は、TrueFalse を逆にする演算子です。

is_logged_in = False

if not is_logged_in:
    print("ログインしてください")

実行結果

ログインしてください

not is_logged_in とすることで「ログインしていないなら」という条件になります。

論理演算子を組み合わせた例

age = 22
member = True

if age >= 18 and member:
    print("会員向けサービスを利用できます")
else:
    print("利用できません")

実行結果

会員向けサービスを利用できます

文字列の比較もできる

条件分岐では、数字だけでなく文字列も比較できます。

color = "red"

if color == "red":
    print("赤色です")
else:
    print("赤色ではありません")

実行結果

赤色です

文字列は完全一致で比較されます。"Red" のように大文字と小文字が違うと、"red" とは一致しません。

input() と条件分岐を組み合わせる

ユーザーの入力に応じて処理を分けると、条件分岐の便利さがよくわかります。

password = input("パスワードを入力してください: ")

if password == "python123":
    print("ログイン成功")
else:
    print("パスワードが違います")

この例は条件分岐の学習用です。実際のサービスでは、パスワードをコードへ直接書いたり、平文のまま保存したりしません。

数値入力で条件分岐をする場合の注意

input() で受け取る値は文字列です。数値として比較したい場合は、int() を使って整数へ変換します。

age = int(input("年齢を入力してください: "))

if age >= 18:
    print("成人です")
else:
    print("未成年です")

int() を使わず文字列のまま 18 などの整数と比較すると、Python 3では型が異なるため TypeError になります。


条件分岐の実用例1:点数判定

score = int(input("点数を入力してください: "))

if score >= 90:
    print("評価はAです")
elif score >= 70:
    print("評価はBです")
elif score >= 50:
    print("評価はCです")
else:
    print("不合格です")

評価判定は、複数の条件を上から順番に判定する定番例です。

条件分岐の実用例2:偶数・奇数の判定

num = int(input("数字を入力してください: "))

if num % 2 == 0:
    print("偶数です")
else:
    print("奇数です")

% は余りを求める演算子です。num % 2 == 0 なら2で割り切れるため偶数、それ以外なら奇数です。

条件分岐の実用例3:ログイン判定

user_name = input("ユーザー名を入力してください: ")
password = input("パスワードを入力してください: ")

if user_name == "admin" and password == "1234":
    print("ログイン成功")
else:
    print("ユーザー名またはパスワードが違います")

and を使うことで、ユーザー名とパスワードの両方が一致する場合だけ成功にできます。この例も条件分岐の学習用です。

条件分岐の実用例4:営業時間の判定

hour = int(input("現在の時刻を入力してください(0〜23): "))

if hour >= 9 and hour < 18:
    print("営業時間内です")
else:
    print("営業時間外です")

複数の比較を and で組み合わせる、実務でもよく使う考え方です。


条件をネストする方法

if の中にさらに if を書くこともできます。これをネスト(入れ子)といいます。

age = 20
has_id = True

if age >= 18:
    if has_id:
        print("本人確認OKです")
    else:
        print("身分証が必要です")
else:
    print("未成年のため利用できません")

まず年齢を確認し、成人であればさらに身分証の有無を確認しています。ただし、ネストが深くなりすぎると読みにくくなるため、最初はシンプルに書くことを意識しましょう。

True と False について知っておこう

条件分岐では、最終的に条件が TrueFalse かで処理が決まります。

print(5 > 3)

実行結果

True
print(2 == 10)

実行結果

False

TrueFalse は、Pythonではブール型(bool型)というデータです。


よくあるミス

1. コロンを忘れる

if age >= 18
    print("成人です")

このコードはエラーになります。正しくは、条件の最後にコロンを付けます。

if age >= 18:
    print("成人です")

2. インデントがない

if age >= 18:
print("成人です")

これもエラーになります。if の中の処理にはインデントを付けます。

if age >= 18:
    print("成人です")

3. = と == を間違える

if age = 18:
    print("18歳です")

比較するときは == を使います。

if age == 18:
    print("18歳です")

4. 条件の順番が適切でない

条件は上から順番に判定されます。広い条件を先に書くと、後ろの条件が意味を持たなくなることがあります。


練習問題

問題1

変数 num が10より大きいときに「10より大きい」と表示し、それ以外なら「10以下」と表示するコードを書いてみましょう。

解答例

num = 8

if num > 10:
    print("10より大きい")
else:
    print("10以下")

問題2

変数 score が80点以上なら「合格」、そうでなければ「不合格」と表示してみましょう。

解答例

score = 75

if score >= 80:
    print("合格")
else:
    print("不合格")

問題3

変数 age が20歳以上なら「お酒を飲めます」、18歳以上20歳未満なら「成人ですが飲酒はできません」、それ未満なら「未成年です」と表示してみましょう。

解答例

age = 19

if age >= 20:
    print("お酒を飲めます")
elif age >= 18:
    print("成人ですが飲酒はできません")
else:
    print("未成年です")

まとめ

今回は、Pythonの条件分岐について学びました。

  • if は「もし〜なら」を表す
  • else は「そうでなければ」の処理を書く
  • elif は別の条件を追加するときに使う
  • 比較演算子で値を比べる
  • 論理演算子を使うと複数の条件を組み合わせられる
  • 条件は上から順番に判定される
  • = は代入、== は比較なので混同しない

条件分岐は、Pythonの中でも非常に重要な基本機能です。ゲーム、業務ツール、Webアプリ、ロボット制御など、さまざまなプログラムで使われます。

最初は簡単な if 文から慣れていき、少しずつ elifandor を組み合わせられるようになりましょう。

コメント

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