ネストされた If - Else
CoddyのPythonジャーニー「Fundamentals」セクションの一部 — レッスン 23/77。
入れ子になった(ネストされた)If-Else文を使用すると、あるif-else文を別のif-else文の中に配置することで、複数の条件をチェックできます。elseブロックの中にifブロックを入れ子にすることができます。これはPythonにおいて一般的で有効なパターンです。
基本的なif-else文を作成します:
age = 18
title = "None"
if age >= 18:
title = "Adult"
else:
title = "Minor"次に、elseブロックの中にネストされた条件を追加しましょう:
age = 18
title = "None"
allowed_to_drink = False
if age >= 18:
title = "Adult"
else:
title = "Minor"
if age >= 13:
title = "Teenager"
else:
title = "Child"また、if ブロックの中に条件をネスト(入れ子に)することもできます:
age = 25
title = "None"
allowed_to_drink = False
if age >= 18:
title = "Adult"
if age >= 21:
allowed_to_drink = True
else:
allowed_to_drink = False
else:
title = "Minor"両方の例において、内側の if-else は、それを含む外側の条件が満たされたときにのみ実行されます。else ブロックの中(または if ブロックの中)に if 文を配置することは完全に有効であり、これこそが「ネスト(入れ子)」と呼ばれる理由です。
チャレンジ
初心者年齢と保護者の同伴に基づいて、映画の視聴資格を判定するプログラムを作成してください。
提供されたコード(変更しないでください):
- 変数
ageが定義され、入力から値が代入されます。 - 変数
with_parentが定義され、boolean 値が代入されます。入力が"true"の場合はTrue、入力が"false"の場合はFalseになります。 - 変数
messageが"None"という値で定義されています。
あなたのタスク:
入れ子(ネスト)になった if-else 文を使用して、message 変数に以下のいずれかの文字列を設定してください。
- 年齢が18歳以上の場合は、
messageを"You can watch any movie"に設定します。 - 年齢が18歳未満の場合:
with_parentがTrueの場合は、messageを"You can watch PG-13 movies"に設定します。with_parentがFalseの場合は、messageを"You can only watch G-rated movies"に設定します。
重要: with_parent はすでに boolean 型であるため、直接チェックしてください(例: if with_parent:)。"true" や "True" といった文字列と比較してはいけません。
重要: 文字列は、大文字・小文字や句読点を含め、完全に一致させる必要があります。例えば、"PG-13 movies"(小文字の 'm')を使用し、"PG-13 Movies" とはしないでください。
チートシート
入れ子になった(ネストされた) if-elif-else 文を使用すると、階層的な意思決定が可能になります。
if condition1:
if condition2:
# 両方の条件が真の場合のコード
else:
# condition1 は真だが condition2 が偽の場合のコード
else:
# condition1 が偽の場合のコード
入れ子になった条件の例:
if age > 18:
if has_license:
print("You can drive")
else:
print("Get a license first")
else:
print("Too young to drive")ネストは無限に深くすることができ、複雑な決定木を作成することが可能です:
if condition1:
if condition2:
if condition3:
# さらにネストされた条件...
自分で試してみよう
# 年齢を整数として取得する
age = int(input())
# 保護者の同伴をブール値(True/False)として取得する
with_parent = input() == "true"
# messageという名前の変数を"None"で宣言する
message = "None"
# ここにネストされたif-elseコードを記述してください
# これより下の行は変更しないでください
print(message)このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。