【Python入門】プログラムの流れを自由自在に!if文を使った条件分岐を徹底マスター #4

「もし天気が晴れなら、ピクニックに行こう。そうでなければ、家で映画を見よう。」

こんにちは! 日常生活で私たちは、無意識のうちに様々な「もし○○なら△△する」という判断(条件分岐)をしていますよね。プログラミングの世界でも、このような条件に応じた処理の切り替えは非常に重要です。Pythonでは、if文(イフぶん)を使うことで、この条件分岐を簡単に実現できます。

この記事では、Pythonの基本的な文法である変数や演算子を理解した初心者の方に向けて、if文の基本的な使い方から、複数の条件を組み合わせる方法まで、具体的なサンプルコードを交えながら分かりやすく解説していきます。if文をマスターすれば、あなたのプログラムはもっと賢く、もっと柔軟になりますよ!


1. 条件分岐とは? なぜif文が必要なの?

プログラミングにおける条件分岐とは、ある特定の条件が満たされているかどうか(真偽、True/False)を判断し、その結果に応じて次に実行する処理の流れを変える仕組みのことです。

なぜif文(条件分岐)が必要なのでしょうか?

  • 状況に応じた処理の実行: ユーザーの入力内容や、プログラムの実行状況に応じて、異なる動作をさせたい場合に必須です。(例: 入力されたパスワードが正しければログイン処理、間違っていればエラーメッセージ表示)
  • エラー処理: 予期せぬ事態(例: 0での割り算)を避けたり、適切に対処したりするために使います。
  • ルールの実装: ゲームのクリア条件や、何かの判定基準など、プログラムにルールを組み込むことができます。

例えば、テストの点数によって「合格」「不合格」を表示したり、年齢によって「子供料金」「大人料金」を分けたりするのも、条件分岐の考え方です。if文は、このような「判断」をプログラムにさせるための基本的な道具なのです。


2. Pythonのif文:基本的な使い方

Pythonで条件分岐を行う最も基本的な構文がif文です。

2.1. if文の基本構文:もし条件が真 (True) なら

if文は以下のように書きます。

if 条件式:
    # 条件式が真 (True) の場合に実行される処理
    # この部分はインデント(字下げ)する
    処理1
    処理2
# インデントが終わると、if文のブロックは終了

重要なポイント:

  • ifの後には、真 (True) または偽 (False) の結果になる「条件式」を書きます。
  • 条件式の後には必ずコロン (:) を付けます。
  • 条件式が真 (True) の場合に実行したい処理は、if文の次の行からインデント(通常は半角スペース4つ)を付けて記述します。このインデントされた部分を「ブロック」と呼びます。

サンプルコード:

age = 20

if age >= 18:
    print("あなたは成人です。")

temperature = 30
if temperature > 28:
    print("今日は暑いですね!エアコンをつけましょう。")

実行結果 (例):

あなたは成人です。
今日は暑いですね!エアコンをつけましょう。

2.2. 条件式で使う「比較演算子」

条件式では、2つの値を比較するために「比較演算子」がよく使われます。

  • == : 左辺と右辺が等しい (例: a == b)
  • != : 左辺と右辺が等しくない (例: a != b)
  • < : 左辺が右辺より小さい (例: a < b)
  • > : 左辺が右辺より大きい (例: a > b)
  • <= : 左辺が右辺以下 (例: a <= b)
  • >= : 左辺が右辺以上 (例: a >= b)

注意: 等しいことを比較する演算子は == (イコール2つ) です。= (イコール1つ) は代入演算子なので間違えないようにしましょう。

x = 10
y = 5

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

if x != y:
    print("xとyは異なります。")

if y < x:
    print("yはxより小さいです。")

2.3. else文:条件が偽 (False) の場合の処理

「もし○○なら△△する、そうでなければ××する」というように、条件が満たされなかった場合の処理も書きたいときにはelse文を使います。

if 条件式:
    # 条件式が真 (True) の場合に実行される処理
    処理A
else:
    # 条件式が偽 (False) の場合に実行される処理
    処理B

else: の後も、実行する処理はインデントします。

サンプルコード:

score = 75

if score >= 80:
    print("合格です!素晴らしい!")
else:
    print("残念ながら不合格です。次回頑張りましょう。")

money = 800
item_price = 1000

if money >= item_price:
    print("商品を購入できます。")
else:
    print("お金が足りません。")

実行結果 (例):

残念ながら不合格です。次回頑張りましょう。
お金が足りません。

2.4. elif文:複数の条件を順番に判定する

「もし○○なら△△する、そうでなくもし□□なら××する、さらにそうでなければ☆☆する」というように、複数の条件で分岐させたい場合はelif文(else if の略)を使います。

if 条件式1:
    # 条件式1が真の場合の処理
    処理1
elif 条件式2:
    # 条件式1が偽で、条件式2が真の場合の処理
    処理2
elif 条件式3:
    # 条件式1, 2が偽で、条件式3が真の場合の処理
    処理3
# ... elif はいくつでも追加可能
else:
    # 全てのif, elifの条件式が偽だった場合の処理 (省略可能)
    処理N

elifは上から順番に評価され、最初に真になった条件のブロックだけが実行されます。どの条件にも当てはまらなかった場合にelseブロックが実行されます(elseは省略可能です)。

サンプルコード:

point = 85

if point >= 90:
    grade = "優"
elif point >= 80:
    grade = "良"
elif point >= 70:
    grade = "可"
elif point >= 60:
    grade = "ギリギリ可"
else:
    grade = "不可"

print(f"あなたの成績は「{grade}」です。") # 出力: あなたの成績は「良」です。

signal_color = "yellow"

if signal_color == "blue":
    print("進め")
elif signal_color == "yellow":
    print("注意して進め")
elif signal_color == "red":
    print("止まれ")
else:
    print("信号の色が不正です。")

3. 条件式を組み合わせる:論理演算子

複数の条件を組み合わせて、より複雑な判断を行いたい場合には「論理演算子」を使います。

  • and (かつ): 両方の条件が真 (True) の場合に、全体の条件式が真になります。
  • or (または): どちらか一方の条件、あるいは両方の条件が真 (True) の場合に、全体の条件式が真になります。
  • not (ではない): 条件式の真偽を反転させます。TrueならFalseに、FalseならTrueになります。

サンプルコード:

age = 25
is_student = True

# 20歳以上 かつ 学生の場合
if age >= 20 and is_student:
    print("20歳以上の学生です。")
else:
    print("20歳以上の学生ではありません。")

temperature = 15
is_raining = False

# 気温が10度未満 または 雨が降っている場合
if temperature < 10 or is_raining:
    print("外出は控えましょう。")
else:
    print("快適な一日になりそうです。")

is_logged_in = False

# ログインしていない場合
if not is_logged_in:
    print("ログインしてください。")

比較演算子と論理演算子を括弧()で組み合わせることで、より複雑な条件も表現できます。

score = 85
attendance_rate = 0.9

if (score >= 80 and attendance_rate >= 0.8) or score == 100:
    print("単位取得の条件を満たしています!")
else:
    print("単位取得の条件を満たしていません。")

4. if文のネスト(入れ子構造)

if文の中に、さらにif文を書くこともできます。これを「ネスト」または「入れ子構造」と呼びます。これにより、より細かい条件分岐が可能になります。

num = 15

if num > 0:
    print("数値は正です。")
    if num % 2 == 0:
        print("そして偶数です。")
    else:
        print("そして奇数です。")
elif num == 0:
    print("数値は0です。")
else:
    print("数値は負です。")

実行結果 (例):

数値は正です。
そして奇数です。

ただし、ネストが深くなりすぎるとプログラムが読みにくくなるため、注意が必要です。論理演算子をうまく使ったり、関数に処理を分けたりすることで、ネストを浅くできる場合もあります。


5. 実践的な例題に挑戦!

では、ここまでの知識を使って、簡単なプログラムを書いてみましょう。

例題:ユーザーから年齢を入力してもらい、その年齢に応じてメッセージを表示するプログラム

# ユーザーに年齢を入力してもらう (input()の戻り値は文字列なので整数に変換)
user_age_str = input("あなたの年齢を入力してください: ")

try:
    user_age = int(user_age_str) # 文字列を整数に変換

    if user_age < 0:
        print("年齢は0以上の値を入力してください。")
    elif user_age < 13:
        print("あなたは子供ですね。")
    elif user_age < 18:
        print("あなたはティーンエイジャーですね。")
    elif user_age < 65:
        print("あなたは大人ですね。")
    else:
        print("あなたはシニアですね。ご長寿おめでとうございます!")

except ValueError:
    print("有効な数値を入力してください。")

この例では、ユーザーからの入力を受け取るinput()関数と、エラー処理のためのtry-except文も使っています(これらについてはまた別の機会に詳しく解説します)。


まとめ:if文でプログラムに「判断力」を持たせよう!

今回は、Pythonの条件分岐の基本であるif文について、以下の内容を学びました。

  • if文の基本的な構文とインデントの重要性
  • 条件式で使う比較演算子 (==, !=, <, >, <=, >=)
  • else文を使った、条件が偽の場合の処理
  • elif文を使った、複数の条件による分岐
  • 条件式を組み合わせる論理演算子 (and, or, not)
  • if文のネスト(入れ子)構造

if文は、プログラムに「考える力」を与え、状況に応じて賢く振る舞うための非常に重要な機能です。これをマスターすることで、あなたが作れるプログラムの種類は格段に増えるでしょう。

次は、同じ処理を何度も繰り返すための「ループ処理(for文やwhile文)」について学んでいくと、さらにパワフルなプログラムが作れるようになりますよ。お楽しみに!

その他の投稿はこちら

コメント

このブログの人気の投稿

タイトルまとめ

これで迷わない!WindowsでPython環境構築する一番やさしい方法 #0

【Python標準ライブラリ完結!】11の冒険をありがとう!君のPython力が飛躍する「次の一歩」とは? 🚀