【Python講座 第3回】条件分岐(if文)完全攻略。初心者がVPSで学ぶ「プログラムの判断力」とインデントの掟

「もし〜なら」がなければ、AIもただの計算機。

こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回(第2回)は、データの入れ物である「変数」と「データ型」について学びました。
これで、数字や文字をコンピュータに記憶させることができるようになりましたね。

しかし、今のままではプログラムは「上から下へ一本道」で進むだけです。
これでは、複雑な現実に立ち向かうことはできません。

  • 「もし、パスワードが間違っていたら、ログインを拒否する」
  • 「もし、サーバーのCPU使用率が90%を超えたら、管理者にメールする」
  • 「もし、夜の12時になったら、バックアップを開始する」

このように、状況に応じて動きを変える仕組みを「条件分岐(if文)」と呼びます。
第3回となる今回は、プログラムに「判断力」を与えるこの重要な機能を、VPS(AlmaLinux 9)上で手を動かしながらマスターしましょう。

コウ君

先生、VPSにログインしました!
if文って他の言語でもやったことありますけど、Pythonのif文って書き方が独特ですよね?
カッコ { } がないというか、スペースで空けるというか…

リナックス先生

よく気づいたわね、コウ君!
その「スペース(インデント)」こそが、Pythonの最大の特徴であり、絶対に守らなければならない掟(おきて)なの。
今回は文法だけでなく、プロが実践している「読みやすいif文の書き方」まで深く掘り下げていくわよ!

本記事では、条件分岐の基礎から、バグを防ぐための実践テクニックまでを網羅します。

🚀 【全8回】Python VPSマスターコース カリキュラム


1. Pythonの「インデント」は絶対ルール

Pythonのif文を学ぶ前に、最も重要なルールである「インデント(字下げ)」について解説します。
C言語やJava、PHPなどの言語では、処理のブロック(範囲)を波括弧 { } で囲みますが、Pythonは「インデントの深さ」でブロックを表現します。

インデントのルール (PEP 8)

  • スペース4つを使うのが標準(PEP 8という公式ルールで推奨)。
  • タブ(Tabキー)は使わないことが強く推奨される(環境によって幅が変わるため)。
  • インデントがズレていると、IndentationError というエラーになり実行できない。

これは「誰が書いても同じ見た目になり、読みやすくなる」というPythonの設計思想によるものです。
VPS上のエディタ(Vimなど)でも、Tabキーを押したらスペース4つが入るように設定しておくと便利です。


2. 実践:VPSでif文を書いてみよう

それでは、VPS(AlmaLinux 9)に接続し、実際にコードを書いてみましょう。
前回の続きから作業します。

2-1. 仮想環境の有効化

作業用ユーザー(python_user)でログインし、仮想環境に入ります。

cd ~/python_study
source .venv/bin/activate

2-2. 基本的なif文の作成

vi basic_if.py を作成し、以下のコードを入力してください。

# 変数定義
score = 80

# if文の開始(行末のコロン : を忘れずに!)
if score >= 60:
    # ここからインデント(スペース4つ)
    print("合格です!")
    print("おめでとうございます")

# インデントを戻すとif文の外になる
print("処理終了")

2-3. 実行と確認

python basic_if.py

実行結果:

合格です!
おめでとうございます
処理終了

変数 score50 に書き換えて実行すると、「処理終了」だけが表示されることを確認してください。


3. 比較演算子と論理演算子

if文の条件を作るための「道具」を紹介します。

3-1. 比較演算子(大小や一致を調べる)

演算子 意味 例 (x=10) 結果
== 等しい x == 10 True
!= 等しくない x != 5 True
> より大きい x > 10 False
>= 以上 x >= 10 True
< より小さい x < 20 True
<= 以下 x <= 10 True

⚠️ 初心者の罠:
「等しい」は ==(イコール2つ)です。=(イコール1つ)は代入になってしまうので注意しましょう。

3-2. 論理演算子(複数の条件を組み合わせる)

演算子 意味
and 〜かつ〜 age >= 20 and has_id == True
or 〜または〜 role == "admin" or role == "editor"
not 〜でない(否定) not is_empty

実践コード (logic_check.py)

ユーザー入力を受け取り、条件を判定するプログラムです。
input() 関数を使うと、キーボードからの入力を受け取ることができます。

# ユーザーに入力を求める
age_str = input("年齢を入力してください: ")
age = int(age_str)  # 文字列を整数に変換

has_ticket_str = input("チケットを持っていますか?(y/n): ")

# 年齢が18歳以上 かつ チケットを持っている(y)場合
if age >= 18 and has_ticket_str == "y":
    print("入場できます。")
else:
    print("入場できません。")

4. 複数の条件分岐 (elif / else)

「Aならこう、Bならこう、それ以外ならこう」という複雑な分岐には、elif(else ifの略)と else を使います。

実践コード (server_status.py)

サーバーのCPU使用率に応じて警告レベルを変えるプログラムです。

cpu_usage = 85  # 仮想的なCPU使用率

if cpu_usage >= 90:
    print("【危険】サーバーがダウン寸前です!")
elif cpu_usage >= 70:
    print("【警告】負荷が高まっています。")
elif cpu_usage >= 50:
    print("【注意】少し負荷がかかっています。")
else:
    print("【正常】サーバーは正常稼働中です。")

解説:
上から順に判定され、最初に True になったブロックだけが実行されます。
cpu_usage = 85 の場合、最初の >= 90 はFalseですが、次の >= 70 がTrueになるため、「【警告】...」が表示されます。


5. プロのノウハウ:ネストを回避する「ガード節」

if文の中にif文を入れることを「ネスト(入れ子)」と言います。
ネストが深くなるとコードが非常に読みづらくなり、バグの温床になります。

悪い例(ネストが深い)

def process_user(user):
    if user is not None:
        if user.is_active:
            if user.has_permission:
                print("処理実行")
            else:
                print("権限がありません")
        else:
            print("無効なユーザーです")
    else:
        print("ユーザーが存在しません")

良い例(ガード節 / Early Return)

「ダメな場合はすぐに処理を抜ける(return)」という書き方をすると、ネストを浅く保てます。
これを「ガード節」と呼びます。

def process_user(user):
    # ダメな条件を先に排除する
    if user is None:
        print("ユーザーが存在しません")
        return

    if not user.is_active:
        print("無効なユーザーです")
        return

    if not user.has_permission:
        print("権限がありません")
        return

    # ここまで到達できたということは、全ての条件をクリアしたということ
    print("処理実行")

どうでしょうか? 圧倒的に読みやすくなりましたね。
「正常系の処理」をインデントの深い場所に書かないのが、美しいコードを書くコツです。

💡 プロの補足:Noneの判定
Pythonでは「値が存在しないこと」を表す None という特別な値があります。
None かどうかの判定には、== ではなく is を使うのが作法(PEP 8)です。
if user is None: (推奨)
if user == None: (非推奨)


6. 演習問題:サーバー死活監視スクリプト(擬似)

今回の総仕上げとして、より実務に近いスクリプトを作ってみましょう。
サーバーのステータスコード(HTTPレスポンス)を判定し、アクションを決めるプログラムです。

課題コード (health_check.py)

以下のコードを書き写して実行してください。

# Webサーバーからのレスポンスコード(擬似的に入力)
# 200: OK, 404: Not Found, 500: Server Error
status_code = int(input("ステータスコードを入力(200/404/500): "))

print(f"確認対象コード: {status_code}")

if status_code == 200:
    print("✅ 正常:Webサイトは稼働しています。")
elif status_code == 404:
    print("⚠️ 注意:ページが見つかりません。リンク切れの可能性があります。")
elif status_code >= 500:
    print("🚨 緊急:サーバーエラー発生!管理者に通知します。")
    # ここに本来はメール送信処理などを書く
else:
    print(f"ℹ️ 不明なステータスコードです: {status_code}")

実行結果例(500を入力した場合):

確認対象コード: 500
🚨 緊急:サーバーエラー発生!管理者に通知します。

これが書ければ、条件分岐の基本はバッチリです!


まとめ:判断力がプログラムに命を吹き込む

お疲れ様でした! 第3回では、プログラムの流れを制御する「条件分岐」について学びました。

今回の達成項目:

  • Pythonの命である「インデント(スペース4つ)」のルールを理解した。
  • if, elif, else を使って条件分岐を書けるようになった。
  • and, or, not で複雑な条件を作れるようになった。
  • 「ガード節」を使って、読みやすいコードを書くコツを知った。
  • None の判定には is を使うことを学んだ。

次回は、コンピュータが最も得意とする「繰り返し処理(ループ)」について学びます。
「1万件のデータを一瞬で処理する」といった、圧倒的なパワーを手に入れましょう。

次回、【第4回】繰り返し処理(for/while):コンピュータの得意技「ループ」 でお会いしましょう!

▼ Pythonを学ぶならVPSで ▼

AlmaLinuxが使える
「おすすめVPS」

VPSランキングを見る

Pythonスキルを活かす
「ITエンジニア転職」

転職エージェントを見る

コメント