以下に、「コメントの使い方を学ぶ練習問題(全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)
- 各問題に
# ???があるので、そこを埋める形式


