Python実践試験に過去問がないときの勉強法|教材を自作の出力予測問題に変えてコードで答え合わせ
「実践試験の過去問を探したけど、どこにも見つからない…」
「教材を読んだだけで、本番の問題に対応できるのか不安」
こんなふうに困っていませんか? Python 3 エンジニア認定実践試験には、公式の過去問集がありません。基礎試験のときのように「過去問を何周もして仕上げる」という勉強法がそのまま使えないんですよね。
この記事は、実践試験の勉強を始めた初〜中級者向けです。過去問がない代わりに、主教材の「Python実践レシピ」(技術評論社)を自分で「出力予測問題」に作り変えて、Pythonで答え合わせする方法を紹介します。問題集の選び方ではなく、「手元の教材だけで演習量を増やす」ための自習のやり方です。一緒に見ていきましょう!
過去問がないと何が困るのか

まず、実践試験の基本の数字を確認しておきます。
| 項目 | 内容 |
|---|---|
| 問題数・試験時間 | 40問・75分 |
| 合格ライン | 70% |
| 合格率 | 約48.6% |
| 主教材 | Python実践レシピ(技術評論社) |
| 過去問集 | 公式のものはなし |
過去問がないと困るのは、「読んで分かったつもり」と「問題として解ける」の差を確かめる手段がないことです。教材を読んでいるときは「なるほど」と思えても、コードだけを見せられて「実行結果は?」と聞かれると手が止まる。合格率が約48.6%と低めなのは、このギャップも一因だと筆者は感じています。
講師として受講生を見ていても、教材を2周読んだのに模擬試験で6割に届かないという相談は本当に多いです。話を聞くと、ほとんどの方が「読む」だけで「予想して確かめる」をしていません。
教材の1節を「出力予測問題」に変える
イメージとしては、教材のサンプルコードを少しだけ変えて、自分に出題する感じです。つまり「このコードを動かすと何が表示される?」という形にするだけで、教材が問題集に変わります。
やり方のポイントをまとめるとこんな感じです👇
- 教材のコードを1か所だけ変える(データの順番・回数・引数など)
- 実行する前に、答えを紙かメモに書く
- 実行して答え合わせし、外れたら「なぜ外れたか」を1行で書く
たとえば、ジェネレーター式を学んだ節なら、こんな問題が作れます。これ、実行せずに答えられますか?
# 問題:次のコードの実行結果は?(実行せずに予想してから答え合わせ)
scores = [70, 85, 90]
doubled = (s * 2 for s in scores)
print(sum(doubled))
print(max(doubled, default="空"))

実行すると、1行目は 490、2行目は 空 と表示されました。2行目が「180」だと予想した方も多いのではないでしょうか。ここが重要です👇
- ジェネレーターは1回最後まで使うと空になる
sum()で全部読み切ったので、max()には何も残っていないdefaultを指定していなければValueErrorになる
答え合わせのあとは、正しく動くコードも自分で書いておくと記憶に残ります。
scores = [70, 85, 90]
# 何度も使うならリストにしておく(ジェネレーターは1回使うと空になる)
doubled = [s * 2 for s in scores]
print(sum(doubled))
print(max(doubled, default="空"))
リストにすれば何度でも使えるので、結果は 490 と 180 になります。「問題を作る → 予想する → 外れた理由を書く → 直したコードを書く」の4点セットで、1節分の演習が完成です😊
自作問題をまとめて答え合わせするスクリプト
問題が増えてくると、1問ずつファイルを作って実行するのは大変です。そこで、問題と自分の予想をリストにまとめておき、一気に答え合わせする小さなスクリプトを作りました。
import contextlib
import io
from collections import Counter
# 自作問題:(章のメモ, 問題コード, 自分の予想)
QUESTIONS = [
("組み込み関数", """
names = ["佐藤", "鈴木", "高橋"]
scores = [80, 65]
print(list(zip(names, scores)))
""", "[('佐藤', 80), ('鈴木', 65), ('高橋', None)]"),
("データ構造", """
x = [[]] * 3
x[0].append(1)
print(x)
""", "[[1], [], []]"),
("dataclasses", """
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: int
y: int
p = Point(1, 2)
p.x = 10
print(p)
""", "FrozenInstanceError"),
("辞書", """
a = {"x": 1, "y": 2}
b = {"y": 20, "z": 30}
print(a | b)
""", "{'x': 1, 'y': 20, 'z': 30}"),
("文字列フォーマット", """
print(f"{1234567:,}|{0.5:.1%}")
""", "1,234,567|50.0%"),
]
def run(code):
"""コードを実行し、表示された文字列(例外なら例外名)を返す"""
buf = io.StringIO()
try:
with contextlib.redirect_stdout(buf):
exec(code, {})
except Exception as e:
return type(e).__name__
return buf.getvalue().strip()
misses = Counter()
for no, (chapter, code, guess) in enumerate(QUESTIONS, start=1):
actual = run(code)
ok = actual == guess
print(f"Q{no} [{chapter}] {'○' if ok else '×'} 予想: {guess} / 実際: {actual}")
if not ok:
misses[chapter] += 1
score = len(QUESTIONS) - sum(misses.values())
print(f"\n正解 {score}/{len(QUESTIONS)} 復習する章: {list(misses)}")

ポイントをまとめるとこんな感じです👇
contextlib.redirect_stdoutで、print()の表示を文字列として受け取る- 例外が出る問題は、例外名(
FrozenInstanceErrorなど)を予想として書く - 外れた問題の「章のメモ」を
Counterで数え、復習する章を出す
わざと2問外した予想を入れて実行すると、Q1とQ2が「×」、残りの3問が「○」になり、最後に「正解 3/5」と復習する章が表示されました(実行結果は上の画像のとおりです)。
Q1 は zip() が短いほうに合わせて止まることを、zip_longest() と混同した例です。Q2 は [[]] * 3 が同じリストを3つ参照していることを忘れた例。どちらも「知っているつもり」で外しやすい定番のパターンです。
⚠️ exec() は渡した文字列をそのまま実行します。ここでは自分で書いた問題だけを入れて使ってください。また、辞書の | 演算子は Python 3.9 以降の機能です(筆者は Python 3.13 で確認しました)。
自作問題を続けるコツと、その限界
自作問題は、1節につき1〜2問で十分です。大事なのは数より「予想してから実行する」習慣のほうです。
- 外れた問題だけ
QUESTIONSに残し、1週間後にもう一度解く - 予想は表示の形まで正確に書く(
[1, 2]と(1, 2)は別物) - 「エラーになる」と予想したら、例外の種類まで書く
受講生を見ていると、自作問題を始めた方は、エラーの種類を答える問題で特に伸びます。普段なんとなく読み流しているエラーメッセージを、自分で予想するようになるからだと思います。
ただし、自作問題には限界もあります。自分で作る問題は、自分が「気づいた」範囲からしか出せないので、苦手な分野ほど問題が作れません。また、40問・75分という本番の時間配分も練習できません。仕上げの段階では、本番形式の問題で通し演習をしておくと安心です。筆者が運営する本試験形式の模擬試験6回分がある実践試験の対策コースでは、本番と同じ形式で解いて、解説で外れた理由まで確認できるようにしています。
最新の試験要項や教材の版は、受験前に協会公式サイト(pythonic-exam.com)で確認してください。
まとめ
- 実践試験には公式の過去問集がないので、「読んだつもり」を確かめる手段を自分で用意する
- 教材のコードを1か所変えて、実行前に結果を予想する問題にする
- 問題と予想をリストにまとめれば、スクリプトで一気に答え合わせでき、復習する章も分かる
- 自作問題では本番の時間配分と苦手分野は補いにくいので、仕上げは本番形式の演習で
「過去問がないから勉強しにくい」を「教材がそのまま問題集になる」に変えていきましょう。まずは今日読んだ節から1問、ぜひ試してみてください🚀
よくある質問
Q1. 実践試験の過去問はどこかで手に入りますか?
公式の過去問集はありません。試験の実施要項や公開されている情報は、協会公式サイト(pythonic-exam.com)をご確認ください。
Q2. 自作問題は何問くらい作れば十分ですか?
数の目安より、教材の各節で1〜2問ずつ「予想してから実行する」ことを続けるほうが大切です。外れた問題を繰り返し解き直して、確実に答えられる問題を増やしていきましょう。
Q3. 自作問題だけで合格できますか?
理解を確かめる練習としては効果的ですが、自分が気づいていない分野の問題は作れず、40問・75分の時間配分の練習もできません。仕上げに本番形式の問題で通し演習をしておくと安心です。
\ 受験前に、今の実力を無料でチェック /
本記事の筆者が運営する試験対策の専門サービスでは、本番と同じ形式の模擬試験(基礎・実践・データ分析 各1回分)を無料で受験できます。クレジットカードの登録は不要です。
▶ 試験の全体像・勉強法のまとめは完全ガイドへ
こちらも読まれています
📚 関連商品・おすすめ書籍
※本記事にはアフィリエイトリンクが含まれます。




