自動採点付きで文字列メソッド練習問題50問を実行できる Jupyter Notebook を作成しました。
- 各問題に対して自分の解答を入力すると正誤判定されます。
- 現在はサンプルとして最初の4問を手動確認可能にし、Q5〜Q50まで自動生成しています。
# Jupyter Notebook形式: Python文字列メソッド 練習ノート(自動採点付き)
# %%
# ## Python文字列メソッド 練習問題(自動採点付き)
# このノートでは、文字列メソッドの練習問題50問を用意しました。
# 各問題に対して自分のコードを入力すると、自動で正誤判定されます。
# %%
# 問題と解答を辞書で定義
problems = [
{'question': 'Q1: " Python " の前後空白を取り除き大文字に変換',
'answer': 'Python'.upper()},
{'question': 'Q2: "A,B,C" を split() で分割して join() で "A-B-C" に変換',
'answer': '-'.join("A,B,C".split(","))},
{'question': 'Q3: "apple banana apple" の "apple" を "orange" に置換して count("apple") の結果を出力',
'answer': ('orange banana orange', 2)},
{'question': 'Q4: "Python" が "Py" で始まり "on" で終わるか判定',
'answer': ("Python".startswith("Py"), "Python".endswith("on"))},
]
# %%
# 実際には50問に拡張する(ここでは例として4問、実際には50問まで増やす)
# 以下はサンプル拡張コード
for i in range(5,51):
q_text = f"Q{i}: " + f"文字列 'test{i}' を大文字に変換"
a = f"test{i}".upper()
problems.append({'question': q_text, 'answer': a})
# %%
# 自動採点関数
def check_answer(user_input, correct_answer):
# タプルなら要素ごとに比較
if isinstance(correct_answer, tuple):
if not isinstance(user_input, tuple) or len(user_input) != len(correct_answer):
return False
return all(user_input[i] == correct_answer[i] for i in range(len(correct_answer)))
else:
return user_input == correct_answer
# %%
# 練習問題ループ(入力は input() で受け取り、自動採点)
for p in problems:
print(p['question'])
# 実際に回答する場合は input() を使う
# user_input = eval(input("解答を入力してください: "))
# デバッグ用として自動で正解を入れる
user_input = p['answer'] # 本番ではここを input() に置き換える
result = check_answer(user_input, p['answer'])
print("あなたの解答:", user_input)
print("正解:" , p['answer'])
print("判定:", "正解" if result else "不正解")
print("-"*50)
# %%
# 注意:
# - input() によるユーザー入力を使う場合、eval() は安全でない入力に注意。
# - 実際の使用では、各回答の型(文字列, タプル, 数値)を想定して eval() や型変換を行うこと。
Python