基礎から学ぶPython入門 90日コース | Python基礎 - Day 5:条件分岐

Python 90日で身につけるPython
スポンサーリンク
スポンサーリンク

Day 5:条件分岐 ― 「状況に応じて“やること”を変えられるようになる」

Day 5では、「条件分岐」を扱います。 条件分岐は、「もし○○ならこうする、そうでなければこうする」といった“判断”をコードで表現するための仕組みです。 Pythonでは if / elif / else と、Day 3で学んだ比較演算子・論理演算子(and / or / not)を組み合わせて使います。 ここを理解すると、「入力内容に応じてメッセージを変える」「権限に応じて操作を制限する」といった、現実的なロジックを書けるようになります。

if ― 「条件がTrueのときだけ、そのブロックを実行する」

if は、「ある条件がTrueのときだけ、その中の処理を実行する」ための構文です。 基本形は次のようになります。

# if文の基本形

age = 20  # 年齢

# ageが18以上なら、このブロックが実行されます
if age >= 18:
    print("成人です")  # 条件がTrueのときだけ実行される行
Python

ここで重要なのは、次の3点です。

  • 条件式はTrue / Falseを返す式であること 例:age >= 18score == 100is_admin == True などです。
  • :(コロン)の後にインデントされたブロックを書くこと Pythonではインデント(行頭のスペース)が「どこまでがifの中か」を表します。
  • 条件がFalseのときは、そのブロックは完全にスキップされること

もう少し具体的な例を見てみます。

# ログイン試行回数に応じて警告を出す簡単な例

failed_login_count = 3  # 失敗したログイン回数

if failed_login_count >= 3:
    print("警告: ログイン失敗が多すぎます")
Python

ここでは、「失敗回数が3以上なら警告を出す」という条件を if で表現しています。 セキュリティの世界では、このような「閾値を超えたら警告・制限する」というロジックがよく登場します。

else ― 「条件がFalseのときに“代わりにやること”を書く」

else は、「ifの条件がFalseだったときに実行するブロック」を書くための構文です。 基本形は次のようになります。

# if / else の基本形

age = 16  # 年齢

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

ここでは、

  • age >= 18 がTrueなら「成人です」
  • Falseなら「未成年です」

という2択のロジックになっています。

もう少しセキュリティ寄りの例を見てみます。

# 認証済みかどうかでメッセージを変える例

is_authenticated = False  # 認証済みかどうか

if is_authenticated:
    print("ダッシュボードにアクセスできます")
else:
    print("ログインしてください")
Python

ここで、if is_authenticated: は「is_authenticated が Trueかどうか」をチェックしています。 Pythonでは、真偽値変数をそのまま条件に書くことがよくあります。

elif ― 「複数の条件を“上から順番に”チェックする」

elif は、「ifの次に続く“別の条件”」を表す構文です。 ifelifelif → … → else という形で、「上から順番に条件をチェックして、最初にTrueになったブロックだけを実行する」という動きになります。

基本形は次のようになります。

# if / elif / else の基本形

score = 75  # テストの点数

if score >= 90:
    print("評価: S")
elif score >= 80:
    print("評価: A")
elif score >= 70:
    print("評価: B")
else:
    print("評価: C以下")
Python

ここでの流れはこうです。

  1. score >= 90 をチェック
    • Trueなら「評価: S」を表示して終了
    • Falseなら次へ
  2. score >= 80 をチェック
    • Trueなら「評価: A」を表示して終了
    • Falseなら次へ
  3. score >= 70 をチェック
    • Trueなら「評価: B」を表示して終了
    • Falseなら最後の else
  4. どれもTrueでなければ「評価: C以下」

このように、「複数の条件のうち、どれか1つに当てはまるものを選ぶ」というときに elif が活躍します。

セキュリティ寄りの例として、「パスワード強度を判定する」簡易版を見てみます。

# パスワード強度を簡易的に判定する例(あくまでイメージです)

password_length = 10  # パスワードの長さ

if password_length >= 12:
    print("パスワード強度: 強い")
elif password_length >= 8:
    print("パスワード強度: 普通")
else:
    print("パスワード強度: 弱い(8文字以上にしてください)")
Python

ここでは、「長さ」に基づいて強度をざっくり分類しています。 実際のシステムでは、文字種や辞書攻撃耐性なども考慮しますが、「条件分岐でランク分けする」という発想は同じです。

比較演算子 ― 「条件式の“True / False”を作るための基本の記号」

条件分岐の中で使う「条件式」は、比較演算子を使って作ることが多いです。 代表的な比較演算子は次の通りです。

  • ==:等しいかどうか
  • !=:等しくないかどうか
  • >:より大きいか
  • <:より小さいか
  • >=:以上か
  • <=:以下か

具体的な例を見てみます。

# 比較演算子を使った条件分岐の例

age = 18

if age == 18:
    print("ちょうど18歳です")

if age != 18:
    print("18歳ではありません")

if age > 18:
    print("18歳より上です")

if age <= 18:
    print("18歳以下です")
Python

ここで、各条件式はそれぞれTrue / Falseを返します。 if は「その結果がTrueならブロックを実行する」という動きをします。

セキュリティ寄りの例として、「ログイン失敗回数に応じてロックする」イメージを見てみます。

# ログイン失敗回数に応じてアカウントをロックする例(簡易版)

failed_login_count = 5  # 失敗したログイン回数
max_failed_count = 5    # 許容する最大失敗回数

if failed_login_count >= max_failed_count:
    print("アカウントを一時ロックします")
else:
    print("まだログインを試行できます")
Python

ここでは、「失敗回数が閾値以上かどうか」を >= で判定しています。 このように、比較演算子は「どの条件で制限するか」をコードに落とし込むための基本ツールです。

and / or ― 「複数の条件を組み合わせて“より厳密な条件”を作る」

論理演算子 andor は、「複数の条件を組み合わせて1つの条件式にする」ための記号です。

  • and:両方の条件がTrueのときだけTrue
  • or:どちらか一方でもTrueならTrue

まずは and の例を見てみます。

# and を使った条件分岐の例

age = 20
is_student = True

# 20歳以上かつ学生であるか
if age >= 20 and is_student:
    print("20歳以上の学生です")
else:
    print("条件に当てはまりません")
Python

ここでは、「年齢が20以上で、かつ学生である」という2つの条件を and でつないでいます。 どちらもTrueのときだけ、全体がTrueになります。

次に or の例です。

# or を使った条件分岐の例

age = 16
has_parent_permission = True  # 保護者の許可があるかどうか

# 18歳以上か、保護者の許可があるか
if age >= 18 or has_parent_permission:
    print("利用を許可します")
else:
    print("利用は許可されません")
Python

ここでは、「年齢が18以上」または「保護者の許可がある」のどちらか一方でもTrueなら、全体がTrueになります。

セキュリティ寄りの例として、「認証済みで、かつ権限があるユーザーだけ操作を許可する」条件を見てみます。

# 認証と権限を組み合わせた条件分岐の例

is_authenticated = True   # 認証済みかどうか
has_permission = False    # 権限があるかどうか

if is_authenticated and has_permission:
    print("操作を許可します")
else:
    print("操作は許可されません")
Python

ここでは、「認証済み AND 権限あり」という条件を and で表現しています。 逆に、「管理者である OR 特別なトークンを持っている」といった条件は or で書けます。

not ― 「True / Falseを“ひっくり返して”条件を反転させる」

not は、「真偽値を反転させる」ための論理演算子です。

  • not TrueFalse
  • not FalseTrue

基本的な例を見てみます。

# not の基本

is_active = True

if not is_active:
    print("非アクティブです")
else:
    print("アクティブです")
Python

ここでは、「is_active が Falseのときに“非アクティブです”と表示したい」という意図を、not is_active で表現しています。

セキュリティ寄りの例として、「認証されていないユーザーをログインページに誘導する」条件を見てみます。

# 認証されていないユーザーをチェックする例

is_authenticated = False  # 認証済みかどうか

if not is_authenticated:
    print("ログインページに移動してください")
else:
    print("ダッシュボードにアクセスできます")
Python

ここでは、「認証されていない(not 認証済み)」という条件を not is_authenticated で表現しています。 not は、「逆の条件を書きたいとき」に非常に便利です。

Day 5のまとめと次へのつながり

Day 5では、

  • if:条件がTrueのときだけブロックを実行する
  • else:条件がFalseのときに代わりのブロックを実行する
  • elif:複数の条件を上から順番にチェックする
  • 比較演算子:==, !=, >, <, >=, <= で値を比較してTrue / Falseを作る
  • 論理演算子:and, or, not で条件を組み合わせたり反転させたりする

を学びました。

ここまで理解できると、「状況に応じてやることを変える」という、プログラムの“意思決定”の部分がかなり書けるようになります。 次のステップでは、この条件分岐を「繰り返し(for / while)」と組み合わせて、複数のデータを順番に処理しながら、条件に応じて振る舞いを変えるようなコードを書いていきます。

Day 5で特に重要なのは、「条件式はTrue / Falseを返す“質問”であり、if はその質問に対する“答えに応じて行動を変える仕組み”だ」という感覚です。 この感覚が身につくと、「このチェックは十分か」「この条件は安全か」といったセキュリティ的な視点も、自然と条件分岐の中に組み込めるようになっていきます。


Day 5:条件分岐で「年齢判定プログラム」を作る

Day 5の制作編では、「年齢判定プログラム」を題材にして、ifelifelse、比較演算子、andornot を実際のコードの中で使っていきます。 年齢判定は、「子ども」「大人」「シニア」などの区分けをする典型的な条件分岐の例であり、 現実のルールをそのままコードに落とし込む練習としてとても良い題材です。

年齢判定の全体イメージを決める

まず、「どんな区分けをしたいか」を決めます。 ここでは、例として次のようなルールにします。

  • 0歳未満 → 「不正な年齢です」
  • 0〜12歳 → 「子どもです」
  • 13〜19歳 → 「ティーンです」
  • 20〜64歳 → 「大人です」
  • 65歳以上 → 「シニアです」

このルールを、ifelifelse と比較演算子を使ってコードにしていきます。

if・elif・elseで「年齢に応じたメッセージ」を表示する

まずは、年齢を1つ入力して、その年齢に応じたメッセージを表示する基本的なプログラムを書きます。

# 年齢判定プログラム(基本版)

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

# 入力が数字かどうかを簡易チェックします
if not age_text.isdigit():
    print("数字で年齢を入力してください。")
else:
    age = int(age_text)  # 文字列を整数に変換します

    if age < 0:
        print("不正な年齢です。")
    elif age <= 12:
        print("子どもです。")
    elif age <= 19:
        print("ティーンです。")
    elif age <= 64:
        print("大人です。")
    else:
        print("シニアです。")
Python

ここでのポイントを整理します。

  • if not age_text.isdigit(): 入力が数字でない場合に「数字で年齢を入力してください」と表示し、それ以上の判定をしないようにしています。 not は「条件を反転する」演算子で、「数字ではない場合」という意味になります。
  • age = int(age_text) 文字列を整数に変換して、比較演算子で扱えるようにしています。
  • if age < 0: 年齢が0未満の場合は「不正な年齢」として扱っています。
  • elif age <= 12: 「0〜12歳」を「子ども」と判定しています。 ここでは、「前の条件(age < 0)が偽で、かつ age <= 12 が真」の場合にこのブロックが実行されます。
  • elif age <= 19: 「13〜19歳」を「ティーン」と判定しています。 すでに「12歳以下」は前の条件で処理されているので、ここでは「13〜19歳」が対象になります。
  • elif age <= 64: 「20〜64歳」を「大人」と判定しています。
  • else: 上記のどれにも当てはまらない場合(65歳以上)を「シニア」としています。

ifelifelse は、「上から順番に条件をチェックして、最初に真になったところだけを実行する」という仕組みです。 この性質を利用して、「範囲ごとの判定」を自然に書くことができます。

比較演算子を意識して「条件の意味」を整理する

年齢判定では、次のような比較演算子を使っています。

  • <(より小さい)
  • <=(以下)
  • >=(以上)
  • >(より大きい)
  • ==(等しい)
  • !=(等しくない)

例えば、「ティーンかどうか」を判定する条件を単独で書くとこうなります。

age = 15

if age >= 13 and age <= 19:
    print("ティーンです。")
else:
    print("ティーンではありません。")
Python

ここでは、

  • age >= 13 → 「13歳以上」
  • age <= 19 → 「19歳以下」
  • and → 「両方の条件が真である場合に真」

という意味になります。 つまり、「13歳以上かつ19歳以下」であれば「ティーン」と判定されます。

先ほどの年齢判定プログラムでは、elif age <= 19: のように書いていましたが、 これは「前の条件で12歳以下が除外されている」ことを前提にしているため、 結果として「13〜19歳」を表現できています。

and・or・not を使って「複雑な条件」を表現する

次に、andornot を使った条件を少し深掘りしてみます。

and ― 「両方の条件が真のときだけ真」

例えば、「ティーンかつ学生かどうか」を判定する例を考えます。

age = 16
is_student = True  # 学生かどうかを表す真偽値

if age >= 13 and age <= 19 and is_student:
    print("ティーンの学生です。")
else:
    print("ティーンの学生ではありません。")
Python

ここでは、

  • age >= 13 and age <= 19 → 「ティーンである」
  • and is_student → 「かつ学生である」

という条件を組み合わせています。 and は、「すべての条件が真である場合に真」となる演算子です。

or ― 「どちらかの条件が真なら真」

例えば、「子どもまたはシニアかどうか」を判定する例を考えます。

age = 70

if age <= 12 or age >= 65:
    print("子どもまたはシニアです。")
else:
    print("子どもでもシニアでもありません。")
Python

ここでは、

  • age <= 12 → 「子ども」
  • age >= 65 → 「シニア」
  • or → 「どちらか一方でも真なら真」

という意味になります。 or は、「少なくとも1つの条件が真であれば真」となる演算子です。

not ― 「条件を反転する」

not は、「条件が真なら偽、偽なら真」に反転する演算子です。 例えば、「ティーンではないかどうか」を判定する例を考えます。

age = 25

is_teen = (age >= 13 and age <= 19)

if not is_teen:
    print("ティーンではありません。")
else:
    print("ティーンです。")
Python

ここでは、

  • is_teen が「ティーンかどうか」を表す真偽値
  • not is_teen が「ティーンではない」という条件

になっています。

not は、「この条件が成り立たない場合」という意味を自然に表現できるので、 入力チェックやエラーハンドリングなどでよく使われます。

年齢判定プログラムの完成版(コメント付き)

最後に、ここまでの内容を踏まえた「年齢判定プログラム」の完成版を示します。 コメントを多めに入れて、初心者の方にも読みやすい形にしています。

# 年齢判定プログラム(完成版)

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

# 入力が数字かどうかをチェックします
if not age_text.isdigit():
    print("数字で年齢を入力してください。")
else:
    age = int(age_text)  # 文字列を整数に変換します

    # 年齢に応じてメッセージを表示します
    if age < 0:
        print("不正な年齢です。")
    elif age <= 12:
        print("子どもです。")
    elif age <= 19:
        print("ティーンです。")
    elif age <= 64:
        print("大人です。")
    else:
        print("シニアです。")

    # 追加の判定例:ティーンの学生かどうか
    is_student_text = input("学生ですか? (y/n): ")

    # 'y'ならTrue、それ以外ならFalseとみなします
    is_student = (is_student_text.lower() == "y")

    if age >= 13 and age <= 19 and is_student:
        print("あなたはティーンの学生です。")
    elif age >= 13 and age <= 19 and not is_student:
        print("あなたはティーンですが、学生ではありません。")
    else:
        print("ティーンではないか、判定対象外です。")
Python

このサンプルでは、

  • ifelifelse で年齢に応じた区分けを行っています。
  • 比較演算子で「範囲」を表現しています。
  • andornot を使って、「ティーンかつ学生」「ティーンではない」といった複合条件を扱っています。
  • 入力チェックを入れることで、「数字以外の入力によるエラー」を防いでいます。

Day 5(制作編)のまとめ

Day 5の制作編では、「年齢判定プログラム」を通して、

  • ifelifelse で「条件に応じた分岐」を書く
  • 比較演算子で「範囲」や「等しい/等しくない」を表現する
  • andornot で「複数の条件を組み合わせる」
  • 入力チェックと条件分岐を組み合わせて、「安全に動く判定ロジック」を作る

という一連の流れを体験していただきました。

ここまで来ると、「条件分岐は単なるif文ではなく、“現実のルールをコードに翻訳するための道具”」として見えるようになっているはずです。 この感覚を土台に、今後はログイン判定、権限チェック、入力バリデーションなど、 よりセキュリティを意識した条件分岐へと自然に進んでいくことができます。

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