「もし〜なら」がなければ、AIもただの計算機。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回(第2回)は、データの入れ物である「変数」と「データ型」について学びました。
これで、数字や文字をコンピュータに記憶させることができるようになりましたね。
しかし、今のままではプログラムは「上から下へ一本道」で進むだけです。
これでは、複雑な現実に立ち向かうことはできません。
- 「もし、パスワードが間違っていたら、ログインを拒否する」
- 「もし、サーバーのCPU使用率が90%を超えたら、管理者にメールする」
- 「もし、夜の12時になったら、バックアップを開始する」
このように、状況に応じて動きを変える仕組みを「条件分岐(if文)」と呼びます。
第3回となる今回は、プログラムに「判断力」を与えるこの重要な機能を、VPS(AlmaLinux 9)上で手を動かしながらマスターしましょう。
先生、VPSにログインしました!
if文って他の言語でもやったことありますけど、Pythonのif文って書き方が独特ですよね?
カッコ { } がないというか、スペースで空けるというか…
よく気づいたわね、コウ君!
その「スペース(インデント)」こそが、Pythonの最大の特徴であり、絶対に守らなければならない掟(おきて)なの。
今回は文法だけでなく、プロが実践している「読みやすいif文の書き方」まで深く掘り下げていくわよ!
本記事では、条件分岐の基礎から、バグを防ぐための実践テクニックまでを網羅します。
🚀 【全8回】Python VPSマスターコース カリキュラム
- 【第1回】環境構築とHello World:AlmaLinux 9でPythonを動かす
- 【第2回】変数とデータ型:コンピュータにおける「データ」の扱い方
- 【第3回】条件分岐(if文)(今回):プログラムに「判断」させる
- 【第4回】繰り返し処理(for/while):コンピュータの得意技「ループ」
- 【第5回】関数とモジュール:コードを部品化して再利用する
- 【第6回】外部ライブラリの活用(pip):便利な道具をインターネットから入手する
- 【第7回】ファイル操作とWebアクセス:ログ保存とデータ収集
- 【第8回】自動化システム構築:定期実行(Cron)でボットを作成する
目次
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
実行結果:
合格です! おめでとうございます 処理終了
変数 score を 50 に書き換えて実行すると、「処理終了」だけが表示されることを確認してください。
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」
Pythonスキルを活かす
「ITエンジニア転職」


コメント