では、「ネストを平坦化する練習問題セット(10問)」を紹介します。
すべて ifの入れ子構造 → 平坦化(リファクタ) の練習形式です。
Q1:単純な2段ネスト
if x > 0:
if x < 10:
print("1桁の正の数です")
Python課題:
このネストを1行の条件式にまとめて書き直してください。
Q2:elseの中にifがあるパターン
if score >= 80:
print("合格!")
else:
if score >= 50:
print("あと少し!")
Python課題:elif を使って平坦化してください。
Q3:3段ネスト
if age >= 0:
if age < 13:
if gender == "男":
print("少年です")
Python課題:
3つの条件を組み合わせて、1つのifで書き直してください。
Q4:複数分岐 + ネスト
if temp > 0:
if temp < 25:
print("過ごしやすい気温です")
else:
print("少し暑いですね")
else:
print("寒いです")
Python課題:elif を使って、同じ動作をするように平坦化してください。
Q5:入力チェック
if user_input.isdigit():
if int(user_input) > 0:
print("正の数です")
Python課題:
2つの条件を組み合わせて、1つのifで判定するように書き直してください。
Q6:ネストされた条件と早期終了
if data is not None:
if len(data) > 0:
print("データがあります")
Python課題:
ネストを使わず、早期return(またはcontinue)を使ってスッキリさせてください。
Q7:複雑なelif連鎖を使って平坦化
if season == "春":
if weather == "晴れ":
print("お花見日和です")
Python課題:ifを1つにまとめて、条件式にandを使って書き直してください。
Q8:ネスト + 否定条件
if not canceled:
if paid:
print("予約が確定しました")
Python課題:
ネストを平坦化して1行で書き直してください。
Q9:多段ネスト + elseブロック
if user == "admin":
if password == "1234":
print("ログイン成功")
else:
print("パスワードが違います")
else:
print("ユーザーが存在しません")
Python課題:
ネストをifとelifに分けて平坦化してください。
Q10:現場的な「入れ子ロジック」
if request:
if request.get("user"):
if request["user"].get("active"):
print("アクティブなユーザーです")
Python課題:andを使って、1つの条件式に書き直してください。
(※例:if request and "user" in request and request["user"].get("active"):)
発展課題(+α)
上のどれかを選び、「平坦化前と後のコードの違い(行数・読みやすさ・ネストレベル)」を比較してみましょう。
例として:
- ネストレベルを
1→0に減らせた - 条件式が1行になって読みやすくなった
- 意図が明確になった


