Python | ネストを平坦化する練習問題セット

Python
スポンサーリンク

では、「ネストを平坦化する練習問題セット(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

課題:
ネストをifelifに分けて平坦化してください。


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行になって読みやすくなった
  • 意図が明確になった
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました