Contents
はじめに
Pythonでは、条件によって処理を変えたい場面がよくあります。
たとえば、次のような場面です。
- 18歳以上なら「成人です」と表示する
- 点数が80点以上なら「合格」と表示する
- パスワードが正しければログインを許可する
このような「条件に応じて処理を分ける」仕組みを、条件分岐といいます。
今回は、Pythonの条件分岐で使う基本構文と、条件を書くための演算子を学びます。
ifelifelse- 比較演算子(
==、!=、>、<、>=、<=) - 論理演算子(
and、or、not)
条件分岐とは?
条件分岐とは、ある条件が正しいかどうかによって、実行する処理を変えることです。
- もし雨なら、傘を持っていく
- もし点数が高ければ、合格と表示する
- もしログイン済みでなければ、ログイン画面に進む
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 >= 90→Falsescore >= 70→Trueprint("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 >= 18 と has_ticket の両方が True なので、メッセージが表示されます。片方でも False なら実行されません。
or の使い方
or は、どちらか一方でも True なら True になります。
weather = "雨"
have_umbrella = False
if weather == "雨" or have_umbrella:
print("雨対策があります")実行結果
雨対策があります
weather == "雨" が True なので、もう一方が False でも全体は True です。
not の使い方
not は、True と False を逆にする演算子です。
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 について知っておこう
条件分岐では、最終的に条件が True か False かで処理が決まります。
print(5 > 3)実行結果
True
print(2 == 10)実行結果
False
True と False は、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 文から慣れていき、少しずつ elif や and、or を組み合わせられるようになりましょう。


コメント