Python | レベル別練習問題:コメント

Python
スポンサーリンク

以下に、「コメントの使い方を学ぶ練習問題(全50問)+自動採点スクリプト付き」の Python ファイルを作ります。
内容は初心者向けで、コメント文を理解・活用する練習です(#コメントの意味、使い方、docstring含む)。
ファイル全体をコピペすれば動作します。


ファイル名例

comment_practice_auto_check.py


"""
コメント学習セット(自動採点付き・全50問)

【使い方】
1. 各問題の # ??? の部分を埋めてください
2. 最後にこのファイルを実行すると、自動で採点結果が表示されます
"""

# ============================================
# Q1〜Q10:コメントの基本
# ============================================

def q1():
    # 次のコメントを「このプログラムは挨拶します」に変更してください
    # Hello world!
    msg = "こんにちは"
    return msg

def q2():
    # ??? : 変数xに10を代入する
    x = 10
    return x

def q3():
    # ??? : この関数は合計を求めます
    a, b = 3, 4
    return a + b

def q4():
    # ??? : 計算結果をprintする
    print(2 + 5)
    return 7

def q5():
    # ??? : 関数名を説明する
    def greet():
        return "Hello"
    return greet()

def q6():
    # ??? : 関数の動作を説明(「2つの数をかけ算」など)
    def multiply(a, b):
        return a * b
    return multiply(3, 4)

def q7():
    # ??? : 「#」の右側をコメントにする
    return 5  # ???

def q8():
    # ??? : 「この変数は合計値」
    total = 100
    return total

def q9():
    # ??? : print文の説明(何を表示しているか)
    print("Pythonコメント練習")
    return "OK"

def q10():
    # ??? : コメントで「この行はスキップする」と書く
    pass


# ============================================
# Q11〜Q20:良いコメント/悪いコメント
# ============================================

def q11():
    # 良いコメント例を追加:「なぜ10倍しているのか」
    nums = [1, 2, 3]
    result = [n * 10 for n in nums]  # ???
    return result

def q12():
    # 悪いコメント例(コードの説明そのまま)を書き換える
    # 「nに1を足している」→「リストの要素を1増やして処理」
    nums = [1, 2, 3]
    result = [n + 1 for n in nums]
    return result

def q13():
    # ??? : コメントが古くならないように注意する
    value = 50
    return value * 2

def q14():
    # ??? : 分かりにくい式を補足する
    import math
    return round(math.sin(math.pi / 4), 2)

def q15():
    # ??? : 「この部分は後で最適化予定」と記す
    s = 0
    for i in range(1000):
        s += i
    return s

def q16():
    # ??? : なぜprintを使わないのか説明
    result = "ログ出力は別で行う"
    return result

def q17():
    # ??? : 「何をしているか」より「なぜそうしているか」を書く
    nums = [x for x in range(5) if x % 2 == 0]
    return nums

def q18():
    # ??? : コメントが多すぎないよう注意
    return "OK"

def q19():
    # ??? : コメントの誤情報を避ける
    data = [1, 2, 3]
    return sum(data)

def q20():
    # ??? : チーム開発での注意点を書く
    return "共有ルール"


# ============================================
# Q21〜Q30:複数行コメント/docstring
# ============================================

def q21():
    """
    ??? : 複数行コメントを使って関数の説明を書く
    """
    return "docstring"

def q22():
    """
    ??? : 引数や戻り値を説明
    """
    def add(a, b):
        return a + b
    return add(2, 3)

def q23():
    """
    ??? : この関数の目的を説明
    """
    return 42

def q24():
    """???
    """
    name = "Alice"
    return name

def q25():
    """???
    (複数行でもOK)
    """
    return "OK"

def q26():
    """???
    docstringを使うとhelp()で説明を見られる
    """
    return True

def q27():
    """???
    Pythonのコメントは # と docstring の2種類
    """
    return "yes"

def q28():
    """???
    コメントアウトでコードを一時無効化
    """
    # print("この行は実行されません")
    return "スキップ"

def q29():
    """???
    コメント内のTODO管理
    """
    return "todo"

def q30():
    """???
    コメントの記号に注意(#は文中に使えない)
    """
    return "sharp"


# ============================================
# Q31〜Q50:応用・実践・例外処理
# ============================================

def q31():
    # ??? : try-except の意図を説明
    try:
        1 / 0
    except ZeroDivisionError:
        return "error"
    return "ok"

def q32():
    # ??? : コメントで「ここは重要」と示す
    return 123

def q33():
    # ??? : 型ヒントの意味を補足
    def add(a: int, b: int) -> int:
        return a + b
    return add(2, 3)

def q34():
    # ??? : コメントでデバッグポイントを示す
    value = 100
    return value

def q35():
    # ??? : コメントで「このコードは一時的」と明記
    temp = "debug"
    return temp

def q36():
    # ??? : コメントでバグ修正の理由を記す
    return "修正版"

def q37():
    # ??? : 仕様変更の背景を説明
    return "仕様更新済み"

def q38():
    # ??? : コードが動作しないときのメモ
    return "未実装"

def q39():
    # ??? : コメントで処理順序を明記
    return [1, 2, 3]

def q40():
    # ??? : コメントで「この後に関数呼び出し」と書く
    return "next"


def q41():
    # ??? : コメントで「値の範囲」を書く
    x = 5
    return x

def q42():
    # ??? : コメントで「例外ケース」を説明
    try:
        y = int("abc")
    except ValueError:
        return "bad"
    return "ok"

def q43():
    # ??? : コメントで「未使用変数」などを説明
    unused = 0
    return "done"

def q44():
    # ??? : コメントで「外部データ仕様」を書く
    data = {"id": 1, "name": "Taro"}
    return data

def q45():
    # ??? : コメントで「関数の呼び出し順」を整理
    def step1(): return "A"
    def step2(): return "B"
    return step1() + step2()

def q46():
    # ??? : コメントで「時間がかかる処理」と注意書き
    for _ in range(1000000):
        pass
    return "done"

def q47():
    # ??? : コメントで「他ファイルとの依存関係」を説明
    return "dependency"

def q48():
    # ??? : コメントで「改修予定」や「将来対応」を書く
    return "future"

def q49():
    # ??? : コメントで「特殊な仕様」の理由を説明
    return "特殊処理"

def q50():
    # ??? : 最後にコメントで感想を書く(自由)
    return "おつかれさま!"


# ============================================
# 自動採点スクリプト
# ============================================

def run_tests():
    correct = 0
    total = 50
    for i in range(1, total + 1):
        try:
            func = globals()[f"q{i}"]
            result = func()
            if result is not None:
                correct += 1
        except Exception:
            pass
    print(f"✅ 採点完了:{correct}/{total} 問 実行できました!")
    print("(#コメントを書いても結果は変わりません。正常に動くか確認しましょう)")

if __name__ == "__main__":
    run_tests()
Python

特徴

  • 問題数:全50問
  • 内容:コメント・docstring・TODO・例外処理・型ヒント・仕様メモなど幅広くカバー
  • 自動採点:単に「実行できる関数数」をカウント(エラーがなければOK)
  • 各問題に # ??? があるので、そこを埋める形式
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました