ななぶろ

-お役立ち情報を気楽に紹介するブログ-

Pythonプログラミング:条件分岐の基礎から応用まで徹底解説

www.amazon.co.jp

Pythonプログラミング:条件分岐の基礎から応用まで徹底解説

Pythonプログラミングにおいて、条件分岐はプログラムの流れを制御するための非常に重要な要素です。このチュートリアルでは、初心者の方でも理解できるように、条件分岐の基本的な概念から応用例までを丁寧に解説します。豊富な練習問題と詳細な解答例を通して、実践的なスキルを習得しましょう。

はじめに

プログラミングの世界では、プログラムが実行される順番は基本的に上から下へです。しかし、状況によっては、特定の条件に基づいて異なる処理を実行したいというニーズが生じます。例えば、「もし雨が降っていれば傘を持っていく」「もしテストの点数が80点以上であればAランク」といった具合に、条件によって行動を変える必要があるのです。

Pythonにおける条件分岐は、まさにそのような状況に対応するための仕組みです。if, elif, else 構文を用いることで、プログラムは様々な条件に応じて柔軟な動作を実現できます。

このチュートリアルでは、以下の内容を順番に解説していきます。

  1. 条件分岐とは?: 条件分岐の基本的な概念と構文について説明します。
  2. 練習問題:条件分岐の基礎: 簡単な条件分岐の問題を通して、基本操作を習得します。
  3. 練習問題:条件分岐の応用: より複雑な条件分岐の問題に挑戦し、実践的なスキルを磨きます。
  4. 論理演算子と条件分岐の組み合わせ: and, or, not などの論理演算子を活用して、より高度な条件表現を学びます。
  5. 練習問題:応用編: 実践的な問題を解くことで、条件分岐の理解を深めます。
  6. まとめ: 本チュートリアルの内容を振り返り、さらなる学習のための情報源を紹介します。

このチュートリアルを通して、Pythonプログラミングにおける条件分岐の基礎から応用までをしっかりと身につけ、より柔軟で高度なプログラムを作成できるようになることを目指しましょう。

Introduction: Programming often involves executing instructions sequentially. However, sometimes the program needs to make decisions based on certain conditions. Conditional statements allow programs to execute different blocks of code depending on whether a condition is true or false. This tutorial will guide you through the fundamentals and advanced applications of conditional branching in Python.

1. 条件分岐とは?

条件分岐は、プログラムの実行フローを制御するための基本的な構文です。特定の条件が真 (True) であるかどうかを評価し、その結果に基づいて異なる処理を実行します。Pythonでは、主に if, elif, else の3つのキーワードを用いて条件分岐を実現します。

  • if: 指定された条件が真の場合に、その下のコードブロックを実行します。
  • elif: 前の if 文の条件が偽 (False) であり、かつこの elif 文の条件が真の場合に、その下のコードブロックを実行します。複数の elif 文を連ねることで、より複雑な条件分岐を記述できます。
  • else: 上記全ての条件が偽の場合に、その下のコードブロックを実行します。
# 例:
age = 20

if age >= 18:
    print("あなたは成人です")  # 年齢が18歳以上の場合
elif age >= 13:
    print("あなたは未成年ですが、ティーンエイジャーです")  # 年齢が13歳以上18歳未満の場合
else:
    print("あなたは子供です")  # 年齢が13歳未満の場合

この例では、age 変数の値に応じて異なるメッセージが表示されます。if 文は年齢が18歳以上かどうかをチェックし、真であれば "あなたは成人です" と表示します。elif 文は年齢が13歳以上かどうかをチェックし、真であれば "あなたは未成年ですが、ティーンエイジャーです" と表示します。そして、上記の全ての条件が偽の場合 (つまり、年齢が13歳未満の場合) に、else 文の "あなたは子供です" が表示されます。

What is Conditional Branching? Conditional branching allows a program to execute different blocks of code based on whether a condition is true or false. Python uses if, elif, and else statements for conditional branching. The if statement executes a block of code if the condition is true, the elif statement executes a block of code if the previous if condition was false and this elif condition is true, and the else statement executes a block of code if all preceding conditions are false.

2. 練習問題:条件分岐の基礎

まずは、基本的な条件分岐の問題から取り組んでいきましょう。これらの問題を解くことで、if, elif, else 文の基本的な使い方を理解し、簡単なプログラムを作成できるようになります。

問題1: 変数 x に整数を代入し、その値が偶数か奇数かを判定するプログラムを作成してください。

Hint: 剰余演算子 (%) を利用すると、割り算の余りを求めることができます。偶数の場合、x % 2 == 0 が真になります。

x = int(input("整数を入力してください: "))

if x % 2 == 0:
    print("偶数です")  # The number is even.
else:
    print("奇数です")  # The number is odd.

問題2: 変数 score にテストの点数を代入し、以下の評価基準で成績を判定するプログラムを作成してください。

  • 90点以上: "A"
  • 80点以上: "B"
  • 70点以上: "C"
  • 60点以上: "D"
  • それ以外: "F"

Hint: elif を複数使用して、段階的に条件を判定します。

score = int(input("テストの点数を入力してください: "))

if score >= 90:
    print("A")  # Grade is A.
elif score >= 80:
    print("B")  # Grade is B.
elif score >= 70:
    print("C")  # Grade is C.
elif score >= 60:
    print("D")  # Grade is D.
else:
    print("F")  # Grade is F.

問題3: 変数 year に西暦の年を代入し、それが閏年かどうかを判定するプログラムを作成してください。

Hint: 閏年は以下の条件を満たす必要があります。

  • 4で割り切れる
  • ただし、100で割り切れる場合は、400で割り切れないと閏年ではありません。
year = int(input("西暦の年を入力してください: "))

if year % 4 == 0:
    if year % 100 == 0:
        if year % 400 == 0:
            print("閏年です")  # It's a leap year.
        else:
            print("閏年ではありません")  # It's not a leap year.
    else:
        print("閏年です")  # It's a leap year.
else:
    print("閏年ではありません")  # It's not a leap year.

これらの問題を解くことで、条件分岐の基本的な使い方をマスターし、より複雑なプログラムを作成するための基礎を築くことができます。

3. 練習問題:条件分岐の応用

少し難易度を上げて、より複雑な条件分岐の問題に挑戦してみましょう。これらの問題を解くことで、条件分岐の応用力を高め、実践的なプログラミングスキルを習得することができます。

問題4: 変数 num に整数を代入し、その絶対値を求めるプログラムを作成してください。

Hint: abs() 関数を利用すると簡単に絶対値を取得できますが、今回は条件分岐を使って実装してみましょう。

num = int(input("整数を入力してください: "))

if num < 0:
    print(-num)  # Print the absolute value.
else:
    print(num)  # Print the number itself.

問題5: 変数 a, b, c にそれぞれ3つの数値を代入し、その中で最も大きい数を求めるプログラムを作成してください。

Hint: if 文をネストして比較していく方法や、max() 関数を利用する方法があります。今回は条件分岐を使って実装してみましょう。

a = int(input("数値1を入力してください: "))
b = int(input("数値2を入力してください: "))
c = int(input("数値3を入力してください: "))

if a >= b and a >= c:
    print(a)  # 'a' is the largest number.
elif b >= a and b >= c:
    print(b)  # 'b' is the largest number.
else:
    print(c)  # 'c' is the largest number.

問題6: 変数 weekday に曜日を表す文字列 (例: "Monday", "Tuesday") を代入し、それが週末かどうかを判定するプログラムを作成してください。

Hint: 週末は土曜日と日曜日です。

weekday = input("曜日を入力してください: ")

if weekday == "Saturday" or weekday == "Sunday":
    print("週末です")  # It's the weekend.
else:
    print("平日です")  # It's a weekday.

これらの問題を解くことで、条件分岐の応用力を高め、より複雑なプログラムを作成するためのスキルを習得することができます。

4. 練習問題:論理演算子と条件分岐の組み合わせ

and, or, not などの論理演算子を条件分岐と組み合わせることで、より複雑な条件を表現することができます。これらの演算子を活用することで、プログラムはより柔軟に状況に対応できるようになります。

問題7: 変数 age に年齢、is_student に学生であるかどうか (True/False) を代入し、18歳以上でかつ学生である場合に "学割適用" と表示するプログラムを作成してください。

Hint: and 演算子を利用します。

age = int(input("年齢を入力してください: "))
is_student = input("学生ですか? (True/False): ").lower() == "true"

if age >= 18 and is_student:
    print("学割適用")  # Student discount applies.
else:
    print("学割適用外")  # Student discount does not apply.

問題8: 変数 score にテストの点数、attendance に出席状況 (True/False) を代入し、60点以上でかつ全科目に出席している場合に "合格" と表示するプログラムを作成してください。

Hint: and 演算子を利用します。

score = int(input("テストの点数を入力してください: "))
attendance = input("全科目に出席していますか? (True/False): ").lower() == "true"

if score >= 60 and attendance:
    print("合格")  # Passed.
else:
    print("不合格")  # Failed.

問題9: 変数 num に整数を代入し、その値が正の偶数か負の奇数かを判定するプログラムを作成してください。

Hint: and, or 演算子を組み合わせて条件を表現します。

num = int(input("整数を入力してください: "))

if num > 0 and num % 2 == 0:
    print("正の偶数")  # Positive even number.
elif num < 0 and num % 2 != 0:
    print("負の奇数")  # Negative odd number.
else:
    print("それ以外")  # Other.

これらの問題を解くことで、論理演算子と条件分岐を組み合わせた複雑な条件表現を習得し、より高度なプログラムを作成できるようになります。

5. 練習問題:応用編

より実践的な問題を解くことで、条件分岐の理解を深めましょう。これらの問題は、実際のプログラミングで遭遇する可能性のある状況を想定しており、解決することで実践的なスキルを向上させることができます。

問題10: 変数 price に商品の価格、discount_rate に割引率 (例: 0.1 は 10%) を代入し、割引後の価格を計算するプログラムを作成してください。ただし、割引率は0から1の範囲である必要があります。

Hint: if 文で割引率が有効な範囲内にあるか確認します。

price = int(input("商品の価格を入力してください: "))
discount_rate = float(input("割引率を入力してください (0から1の範囲): "))

if 0 <= discount_rate <= 1:
    discounted_price = price * (1 - discount_rate)
    print("割引後の価格:", discounted_price)  # Discounted price.
else:
    print("割引率は0から1の範囲で入力してください")  # Please enter a discount rate between 0 and 1.

問題11: 変数 password にユーザーが入力したパスワード、correct_password に正しいパスワードを代入し、パスワードが一致するかどうかを判定するプログラムを作成してください。

Hint: if 文でパスワードが一致するか確認します。

password = input("パスワードを入力してください: ")
correct_password = "password123"

if password == correct_password:
    print("認証成功")  # Authentication successful.
else:
    print("認証失敗")  # Authentication failed.

問題12: 変数 temperature に気温を代入し、以下の条件でメッセージを表示するプログラムを作成してください。

  • 0度以下: "寒いですね"
  • 25度以上: "暑いですね"
  • それ以外: "過ごしやすいですね"

Hint: if, elif, else を利用します。

temperature = int(input("気温を入力してください: "))

if temperature <= 0:
    print("寒いですね")  # It's cold.
elif temperature >= 25:
    print("暑いですね")  # It's hot.
else:
    print("過ごしやすいですね")  # It's comfortable.

これらの問題を解くことで、条件分岐の応用力をさらに高め、より実践的なプログラミングスキルを習得することができます。

6. さらに挑戦したい方へ

上記の問題に慣れてきたら、以下の問題にも挑戦してみてください。

問題13: 変数 year に西暦の年を代入し、それがオリンピック開催年かどうかを判定するプログラムを作成してください (オリンピックは4年に一度開催されます)。

問題14: 変数 num に整数を代入し、その値を2進数で表示するプログラムを作成してください。

問題15: 変数 str に文字列を代入し、その文字列が回文かどうかを判定するプログラムを作成してください (回文とは、前から読んでも後ろから読んでも同じ文字列のことです)。

問題16: 変数 num に整数を代入し、その値が素数かどうかを判定するプログラムを作成してください。

問題17: 変数 score にテストの点数を代入し、以下の評価基準で成績を判定し、さらにランク付けを行うプログラムを作成してください (A: 90以上, B: 80-89, C: 70-79, D: 60-69, F: 60未満)。

問題18: 変数 age に年齢を代入し、以下の条件でメッセージを表示するプログラムを作成してください (18歳以上なら「成人です」、65歳以上なら「高齢者割引適用」)。

問題19: 変数 num に整数を代入し、その値が3の倍数または5の倍数かどうかを判定するプログラムを作成してください。

問題20: 変数 str に文字列を代入し、その文字列に含まれる母音 (a, i, u, e, o) の数をカウントするプログラムを作成してください。

7. まとめ

今回はPythonにおける条件分岐の基礎から応用まで、様々な練習問題を解説しました。これらの問題を通して、条件分岐の重要性と使い方を理解できたかと思います。条件分岐はプログラミングにおいて非常に重要な概念なので、しっかりとマスターしておきましょう。

これらのリソースも参考に、さらに学習を深めてください。頑張ってください!