Python | Python 文字列メソッド リファレンス(用途別+例つき)

Python
スポンサーリンク

自動採点付きで文字列メソッド練習問題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

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました