AI資格ドリル
資格を選ぶ↓

Python3エンジニア認定基礎試験 第4章 制御構造ツール 予想問題と解説

Python3エンジニア認定基礎試験「第4章 制御構造ツール」の予想問題を43問収録しています。このページでは代表39問を解説つきで掲載し、全問は演習画面で解けます。出題は公式シラバスの範囲内です。

この章の要点

break・continue・ループのelse、for文とrange、引数の指定、if文、ラムダ式とドキュメンテーション文字列、pass文などを扱う分野です。全43問(基礎9問・標準26問・応用8問)を収録しています。

  • break・continue・ループのelse
  • for文とrange
  • 引数の指定
  • if文
  • ラムダ式とドキュメンテーション文字列
  • pass文
  • match文
  • 関数の定義
  • コーディングスタイル

情報源と編集区分

公式範囲を確認し、問題数・難易度・確認点は当サイトが集計・編集。 一次情報確認日: 2026-09-18。

試験概要(公式)

確認しておきたいポイント

当サイトの作問時に観察した、取り違えやすい論点です(公式の統計ではありません)。

  • ループの else 節が実行される条件。break で抜けたときは実行されず、使い切って終わったときに実行される。return や例外で途中終了した場合も実行されない。
  • range の終了値が含まれないこと。range(2, 10) は 9 までで、10 は含まれない。
  • デフォルト引数の評価は定義時に一度だけ。可変オブジェクトをデフォルト値にすると呼び出し間で状態が残る。
  • continue と break の混同。continue は反復を飛ばすだけでループを終わらせない。

この章の関連用語

この分野の問題で扱う用語です。意味があいまいなものは、用語集で定義を確認できます。

この章に関連する比較記事

混同しやすい2つの概念を並べて整理した記事です。

よくある質問

Q第4章 制御構造ツールは何問収録されていますか?

A

現在43問を収録しています。内訳は基礎9問・標準26問・応用8問です。

Q第4章 制御構造ツールの頻出論点は何ですか?

A

break・continue・ループのelse、for文とrange、引数の指定、if文、ラムダ式とドキュメンテーション文字列、pass文などが出題対象です(当サイト収録問題に基づく編集部集計)。

Q間違えた問題はどう復習すればいいですか?

A

誤答した選択肢のどこがずれていたかを解説で確認し、関連用語がある場合は用語集で定義に戻ってから再演習することをおすすめします。

第1問 ・ break・continue・ループのelse

for ループに else 節を付けたとき、else 節が実行されるのはどの場合か。

  • アループが最後まで回り切り、break で抜けなかったとき
  • イループの中で break が実行されたとき
  • ウループの中で continue が実行されたとき
  • エループの反復対象が空で、一度も本体が実行されなかったときだけ
答えと解説を見る
アループが最後まで回り切り、break で抜けなかったとき正解
解説

正解は「ループが最後まで回り切り、break で抜けなかったとき」である。公式チュートリアルは「break を実行せずにループが終了すると、else 節が実行されます」と述べ、for 文については「ループ処理の最後のイテレーションが実行されたあと、つまり break が発生しなかった場合に実行されます」と記している。break で抜けた場合は else 節は実行されない。あわせて公式は「return や例外の発生によってループが途中で終了した場合にも else 節の実行はスキップされます」とも述べている。continue については公式に明示の記述は無いが、continue は今回の反復を飛ばして次へ進めるだけでループを終わらせないため、最後まで回り切れば else 節は実行される。反復対象が空の場合も本体は一度も実行されないままループは正常に終わるので else 節は実行され、「空のときだけ」という限定は誤りである。この性質は、公式が挙げる素数探索の例のように「探したが見つからなかった場合」の処理を else 節に置く書き方に使われる。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-001
問題番号 py3b-001 の誤りを報告する
第2問 ・ for文とrange

range(2, 10) が生成する値の並びはどれか。

  • ア2, 3, 4, 5, 6, 7, 8, 9
  • イ2, 3, 4, 5, 6, 7, 8, 9, 10
  • ウ1, 2, 3, 4, 5, 6, 7, 8, 9
  • エ2 から 10 までの偶数だけ
答えと解説を見る
ア2, 3, 4, 5, 6, 7, 8, 9正解
解説

正解は「2, 3, 4, 5, 6, 7, 8, 9」である。range に2つの引数を渡した場合、1つ目が開始値、2つ目が終了値で、終了値は含まれない。そのため 2 から 9 までの8個の値が生成される。終了値を含めたい場合は range(2, 11) と書く。開始値を省略した range(10) は 0 から始まるため、1 から始まる並びにはならない。増分を指定するには3つ目の引数が必要で、2つの引数だけでは偶数に限定されない。range は for i in range(2, 10): のように for文と組み合わせて使うことが多く、添字が必要な場面では for i in range(len(seq)): のように len() と組み合わせる書き方もある。値と添字の両方を同時に扱いたいときは、range と len を組み合わせるより enumerate() を使うほうが読みやすいとされる。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-005
問題番号 py3b-005 の誤りを報告する
第3問 ・ 引数の指定

関数のデフォルト引数に可変オブジェクトを指定したとき、注意すべき挙動はどれか。

  • アデフォルト値は関数を定義した時点で一度だけ評価され、呼び出しごとに作り直されない
  • イデフォルト値は呼び出しごとに毎回新しく作り直される
  • ウ可変オブジェクトはデフォルト引数に指定できず、定義時にエラーになる
  • エデフォルト引数は位置引数より先に評価されるため、順序を入れ替える必要がある
答えと解説を見る
アデフォルト値は関数を定義した時点で一度だけ評価され、呼び出しごとに作り直されない正解
解説

正解は「デフォルト値は関数を定義した時点で一度だけ評価され、呼び出しごとに作り直されない」である。そのためリストや辞書のような可変オブジェクトをデフォルト値にすると、前の呼び出しで加えた要素が次の呼び出しにも残り、呼び出しを重ねるほど蓄積していく。呼び出しごとに新しく作り直されるわけではないので、毎回空から始めたい場合はデフォルト値を None にして関数の中で作る書き方をとる。可変オブジェクトをデフォルト引数に指定すること自体は文法上できるため、定義時にエラーにはならない。評価の順序を入れ替える必要があるという話でもない。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-006
問題番号 py3b-006 の誤りを報告する
第4問 ・ if文

複数の条件を順に判定し、どれにも当てはまらない場合の処理も書きたい。用いる構文の並びはどれか。

  • アif / elif / else
  • イif / elseif / else
  • ウif / else if / otherwise
  • エswitch / case / default
答えと解説を見る
アif / elif / else正解
解説

正解は「if / elif / else」である。Python では2つ目以降の条件を elif で書き、どれにも当てはまらない場合を else で書く。elseif という綴りは Python の構文には無い。else if と2語に分けて書くこともできず、otherwise という語も存在しない。switch / case / default は他の言語の構文で、Python では条件分岐に使わない。なお Python には match 文があるが、これは値の形に応じて分岐する別の構文で、case と組み合わせて使う。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-011
問題番号 py3b-011 の誤りを報告する
第5問 ・ for文とrange

リストの要素と、その位置を示す番号を同時に取り出しながらループしたい。用いる関数はどれか。

  • アrange()
  • イenumerate()
  • ウlen()
  • エzip()
答えと解説を見る
イenumerate()正解
解説

正解は「enumerate()」である。設問は反復可能オブジェクトから要素と位置番号を同時に取り出す方法を尋ねている。range は連続した整数を生成する関数であり、それ自体は対象の要素を返さないため、要素を得るには別途インデックス参照が必要になる。len は要素の総数を返す関数であり、ループの中で要素を1つずつ取り出す操作とは無関係である。zip は複数の並びを同じ位置ごとに組み合わせる関数であり、1つの並びから位置番号を得る用途とは目的が異なる。位置番号と要素の組を1つの並びから直接取り出せるのは enumerate である。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-012
問題番号 py3b-012 の誤りを報告する
第6問 ・ ラムダ式とドキュメンテーション文字列

関数定義の先頭に書いた文字列について、正しい説明はどれか。

  • アコメントとして扱われ、実行時には残らない
  • イドキュメンテーション文字列として扱われ、__doc__ から参照できる
  • ウ関数の戻り値になる
  • エ型の指定として扱われ、__annotations__ に入る
答えと解説を見る
イドキュメンテーション文字列として扱われ、__doc__ から参照できる正解
解説

正解は「ドキュメンテーション文字列として扱われ、__doc__ から参照できる」である。関数定義の最初に置いた文字列はその関数の説明として扱われ、実行時にも __doc__ 属性から読み取れる。行頭に # を付けたコメントは実行時に残らないが、ドキュメンテーション文字列は文字列として残るため性質が違う。戻り値になるのは return で返した値であり、先頭の文字列は戻り値にならない。型の指定は関数のアノテーションで行い、__annotations__ に入るのはそちらである。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-013
問題番号 py3b-013 の誤りを報告する
第7問 ・ pass文

構文上は文が必要だが、何も実行させたくない。用いる文はどれか。

  • アcontinue
  • イbreak
  • ウpass
  • エreturn
答えと解説を見る
ウpass正解
解説

正解は「pass」である。設問は文法上何もしないことを目的とした文を尋ねている。continue は現在の反復を打ち切って次の反復に進む文であり、ループの外では使えず「何もしない」とは働きが異なる。break はループ自体を終了させる文であり、これもループの外では使えない。return は関数の実行を終えて呼び出し元へ値を返す文であり、値を返すという明確な働きを持つ。文法上文が必要な位置を、何の処理も行わずに埋められるのは pass だけである。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-021
問題番号 py3b-021 の誤りを報告する
第8問 ・ match文

match 文で、どのパターンにも当てはまらない場合を受けるために使う書き方はどれか。

  • アcase を書かずに空行にする
  • イmatch の直後に else を書く
  • ウcase にワイルドカードを書く
  • エdefault という語を使う
答えと解説を見る
ウcase にワイルドカードを書く正解
解説

正解は「case にワイルドカードを書く」である。設問はどのパターンにも一致しなかった場合の受け皿をどう書くかを尋ねている。case を書かずに空行を挟む方法は Python の構文として成立しない。match の直後に else を続ける書き方も match 文には存在しない。default という語は他言語の分岐構文で見かける語であり、Python の match 文の構文要素ではない。どのパターンにも当てはまらない場合を受けるには、ワイルドカードのパターンを持つ case を用意する。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-022
問題番号 py3b-022 の誤りを報告する
第9問 ・ 関数の定義

return 文を書かずに終わる関数が返す値はどれか。

  • ア0
  • イ空文字列
  • ウ最後に評価した式の値
  • エNone
答えと解説を見る
エNone正解
解説

正解は「None」である。関数の本体が return 文を通らずに終わった場合、戻り値は None になる。判断の手順としては、まず関数の本体に return があるかを確かめ、無ければ、またはあっても実行の流れがそれを通らずに終われば戻り値は None になると考える。0 や空文字列が返るわけではなく、どちらも return 文で明示して返さなければ得られない値であり、関数の本体を最後まで実行しただけでは現れない。最後に評価した式の値が自動で戻り値になる言語もあるが、Python の関数ではそのような仕組みはなく、返したい値があるなら return 文で明示する必要がある。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-023
問題番号 py3b-023 の誤りを報告する
第10問 ・ コーディングスタイル

複数人でPythonのコードを書くとき、読みやすさをそろえるために公式チュートリアルが紹介しているスタイルガイドはどれか。

  • ア各自の好みに合わせて自由に決めてよく、共通のガイドは示されていない
  • イPythonの文法そのものを定めた仕様書であり、読みやすさのためのものではない
  • ウコードは実行速度を最優先すべきで、読みやすさを扱うガイドは存在しない
  • エPEP 8
答えと解説を見る
エPEP 8正解
解説

正解は「PEP 8」である。公式チュートリアルはコーディングスタイルの節で、Pythonのスタイルガイドとして PEP 8 を挙げ、多くのプロジェクトで採用されている読みやすいコーディングスタイルを示すものだと説明している。読みやすさをそろえる共通のガイドが無いという説明や、Pythonの文法そのものを定めた仕様書だという説明、実行速度を最優先し読みやすさを扱わないという説明は、公式チュートリアルが PEP 8 を紹介している趣旨と合わない。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-09-11確認)

問題番号: py3b-034
問題番号 py3b-034 の誤りを報告する
第11問 ・ 引数の指定

def f(a, b, /, c): return a + b + c と定義した。f(1, 2, c=3) と f(a=1, b=2, c=3) をそれぞれ実行したときの結果として正しいものはどれか。

  • アどちらも 6 を返す
  • イf(1, 2, c=3) は 6 を返し、f(a=1, b=2, c=3) は TypeError になる
  • ウf(1, 2, c=3) は TypeError になり、f(a=1, b=2, c=3) は 6 を返す
  • エどちらも TypeError になる
答えと解説を見る
イf(1, 2, c=3) は 6 を返し、f(a=1, b=2, c=3) は TypeError になる正解
解説

正解は「f(1, 2, c=3) は 6 を返し、f(a=1, b=2, c=3) は TypeError になる」である。/ より前に置いた引数は位置専用で、公式チュートリアルは「位置専用 の場合、引数の順序が重要であり、キーワードで引数を渡せません」と述べている。a と b は / の前にあるので位置でしか渡せず、f(1, 2, c=3) は a=1・b=2 が位置、c=3 がキーワードで渡るため、1 + 2 + 3 で 6 を返す。/ の後の c は位置またはキーワードの引数なので、キーワードで渡しても問題ない。一方、f(a=1, b=2, c=3) は位置専用の a と b をキーワードで渡しているため TypeError になる。公式チュートリアルで pos_only_arg(arg=1) が TypeError になる例と同じ仕組みである。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール 4.9.3 特殊なパラメータ、2026-09-20確認)

問題番号: py3b-048
問題番号 py3b-048 の誤りを報告する
第12問 ・ 引数の指定

def g(a, *, b): return a * b と定義した。g(2, 3) と g(2, b=3) をそれぞれ実行したときの結果として正しいものはどれか。

  • アどちらも 6 を返す
  • イg(2, 3) は 6 を返し、g(2, b=3) は TypeError になる
  • ウg(2, 3) は TypeError になり、g(2, b=3) は 6 を返す
  • エどちらも TypeError になる
答えと解説を見る
ウg(2, 3) は TypeError になり、g(2, b=3) は 6 を返す正解
解説

正解は「g(2, 3) は TypeError になり、g(2, b=3) は 6 を返す」である。引数リストの * より後ろに置いた引数はキーワード専用になり、公式チュートリアルは「引数リストの最初の キーワード専用 引数の直前に * を配置します」と述べている。g では b が * の後ろにあるので、b は g(2, b=3) のようにキーワードで渡さなければならない。g(2, 3) は 3 を位置引数として渡すことになるが、受け付けられる位置引数は a の1つだけなので TypeError になる。公式チュートリアルで kwd_only_arg(3) が TypeError(takes 0 positional arguments but 1 was given)になり、kwd_only_arg(arg=3) が 3 を返す例と同じ仕組みである。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール 4.9.3 特殊なパラメータ、2026-09-20確認)

問題番号: py3b-049
問題番号 py3b-049 の誤りを報告する
第13問 ・ 引数の指定

def concat(*args, sep='/'): return sep.join(args) と定義した。concat('x', 'y', '-') を実行した結果はどれか。

  • ア'x-y'
  • イ'x/y'
  • ウTypeError になる
  • エ'x/y/-'
答えと解説を見る
エ'x/y/-'正解
解説

正解は 'x/y/-' である。*args は、仮引数リストの残りの位置引数をすべてタプルに集める。公式チュートリアルは「通常このような 可変 引数は、関数に渡される入力引数の残りを全て掬い取るために、仮引数リストの最後に置かれます」と述べている。concat('x', 'y', '-') の3つはすべて args に入り、args は ('x', 'y', '-') になる。*args の後ろの sep はキーワード専用の引数で、公式チュートリアルは「位置引数ではなくキーワード引数としてのみ使えることを意味します」と述べているため、'-' が sep になることはない。sep は既定値の '/' のままで、'/'.join(('x', 'y', '-')) が 'x/y/-' になる。区切りを '-' にしたいなら concat('x', 'y', sep='-') と書く。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール 4.9.4 任意引数リスト、2026-09-20確認)

問題番号: py3b-050
問題番号 py3b-050 の誤りを報告する
第14問 ・ 引数の指定

args = [2, 8] のとき、list(range(*args)) の結果はどれか。

  • ア[2, 3, 4, 5, 6, 7, 8]
  • イ[2, 8]
  • ウTypeError になる
  • エ[2, 3, 4, 5, 6, 7]
答えと解説を見る
エ[2, 3, 4, 5, 6, 7]正解
解説

正解は [2, 3, 4, 5, 6, 7] である。公式チュートリアルは、引数がすでにリストやタプルになっていて個別な位置引数を要求する関数呼び出しに渡す場合は「関数呼び出しを * 演算子を使って書き、リストやタプルから引数をアンパックします」と述べ、args = [3, 6] のとき list(range(*args)) が [3, 4, 5] になる例を示している。range(*args) は args の要素を取り出して range(2, 8) と書いたのと同じになる。range() は終端の値を含まないので、2 から 7 までの整数が並ぶ。* を付けずに range(args) と書くとリストを1つの引数として渡すことになり TypeError になるが、* を付けたこの式は TypeError にならない。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール 4.9.5 引数リストのアンパック、2026-09-20確認)

問題番号: py3b-051
問題番号 py3b-051 の誤りを報告する
第15問 ・ ラムダ式とドキュメンテーション文字列

items = [('a', 3), ('b', 1), ('c', 2)] に対して items.sort(key=lambda t: t[1]) を実行した後の items はどれか。

  • ア[('a', 3), ('c', 2), ('b', 1)]
  • イ[('a', 3), ('b', 1), ('c', 2)]
  • ウ[('b', 1), ('c', 2), ('a', 3)]
  • エTypeError になる(lambda は key に渡せない)
答えと解説を見る
ウ[('b', 1), ('c', 2), ('a', 3)]正解
解説

正解は [('b', 1), ('c', 2), ('a', 3)] である。lambda t: t[1] は、タプル t の2番目の要素を返す名前のない小さな関数である。公式チュートリアルは「list.sort() はソートキー関数 key を受け取りますが、これにはラムダ関数を渡せます」と述べ、ラムダ式は「関数オブジェクトが要求されている場所にならどこでも使うことができます」「構文上単一の式に制限されています」と説明している。key の値は ('a', 3) が 3、('b', 1) が 1、('c', 2) が 2 なので、公式チュートリアルの例と同じく key の値が小さい順に並び、2番目の要素が 1、2、3 のタプルの順になる。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール 4.9.6 ラムダ式、2026-09-20確認)

問題番号: py3b-052
問題番号 py3b-052 の誤りを報告する
第16問 ・ 引数の指定

def area(width, height=1): return width * height と定義し、params = {'width': 4, 'height': 5} がある。params の内容をキーワード引数として渡して、20 を得る呼び出しはどれか。

  • アarea(*params)
  • イarea(**params)
  • ウarea(params)
  • エarea(width=params)
答えと解説を見る
イarea(**params)正解
解説

正解は area(**params) である。公式チュートリアルは、リストやタプルを * 演算子でアンパックして位置引数として渡せると述べたうえで、「同じやりかたで、 ** オペレータを使って辞書でもキーワード引数を渡すことができます」と述べ、辞書 d を parrot(**d) として渡す例を示している。area(**params) は area(width=4, height=5) と書いたのと同じになり、4 * 5 で 20 を返す。area(*params) は辞書のキーの 'width' と 'height' を位置引数として渡すことになり、文字列どうしの掛け算で TypeError になる。area(params) と area(width=params) は辞書そのものを width に渡すので、辞書に 1 を掛けようとして TypeError になる。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール 4.9.5 引数リストのアンパック、2026-09-20確認)

問題番号: py3b-053
問題番号 py3b-053 の誤りを報告する
第17問 ・ if文

公式チュートリアル4.1は、if / elif / else の代わりにどのような場面でmatch文が便利だと述べているか。

  • アいくつかの定数と同じ値かを比較する場合や、特定の型や属性かを確認する場合
  • イループを途中で打ち切りたい場合
  • ウ関数の引数にデフォルト値を与えたい場合
  • エ例外を送出したい場合
答えと解説を見る
アいくつかの定数と同じ値かを比較する場合や、特定の型や属性かを確認する場合正解
解説

正解は「いくつかの定数と同じ値かを比較する場合や、特定の型や属性かを確認する場合」である。公式チュートリアル4.1は「いくつかの定数と同じ値かを比較する場合や、特定の型や属性かを確認する場合には、 match 文が便利です」と述べている。一連のif / elif / elifは他の言語のswitch文やcase文の代用になるとも述べられており、match文はその判定を扱いやすくする選択肢として紹介されている。ループの打ち切り、デフォルト引数、例外送出はいずれも別の構文(break文、デフォルト引数指定、raise文)が担う話であり、match文が便利だとされる場面ではない。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.1 if 文、2026-09-28確認)

問題番号: py3b-130
問題番号 py3b-130 の誤りを報告する
第18問 ・ break・continue・ループのelse

for num in range(2, 10): の中で、num % 2 == 0 のとき「偶数 num を見つけた」を出力してcontinueし、それ以外は「奇数 num を見つけた」を出力する処理を書くと、どのような出力になるか。

  • ア偶数のときにその回の残りの処理をスキップし、2から9まで偶数と奇数の行が交互に出力される
  • イ偶数を見つけた時点でループ全体が終了する
  • ウ奇数の行だけがすべて先に出力され、その後で偶数の行が出力される
  • エcontinueはfor文では使えずSyntaxErrorになる
答えと解説を見る
ア偶数のときにその回の残りの処理をスキップし、2から9まで偶数と奇数の行が交互に出力される正解
解説

正解は「偶数のときにその回の残りの処理をスキップし、2から9まで偶数と奇数の行が交互に出力される」である。公式チュートリアル4.4はこの例を示し、num % 2 == 0のとき「偶数 num を見つけた」を出力してcontinueし、それ以外は「奇数 num を見つけた」を出力するため、2から9まで偶数と奇数の行が交互に出力されると説明している。continue文はループの次のイテレーションを実行する文であり、内側のfor文・while文から抜け出すbreak文とは役割が異なる。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.4 break 文と continue 文、そしてループの else 節、2026-09-28確認)

問題番号: py3b-131
問題番号 py3b-131 の誤りを報告する
第19問 ・ pass文

class MyEmptyClass: pass という書き方について、公式チュートリアルの説明として正しいものはどれか。

  • ア構文エラーになるため実際には書けない
  • イ最小のクラスを作るときによく使われる方法である
  • ウpassを書くとクラス定義自体が無効になる
  • エpass文はクラス定義の中では使用できない
答えと解説を見る
イ最小のクラスを作るときによく使われる方法である正解
解説

正解は「最小のクラスを作るときによく使われる方法である」である。公式チュートリアル4.6は、class MyEmptyClass: pass を「最小のクラスを作るときによく使われる方法」だと説明し、pass文が構文上は文が必要だがプログラム上何の動作もする必要がないときに使われると述べている。もう一つの使い道として、新しいコードを書いているときの関数や条件文の仮置きの本体を挙げ、def initlog(*args): pass の例も示している。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.6 pass 文、2026-09-28確認)

問題番号: py3b-132
問題番号 py3b-132 の誤りを報告する
第20問 ・ match文

match文のシーケンスパターンで (x, y, *_) と書いた場合、どのようなシーケンスにマッチするか。

  • ア要素数がちょうど2個のシーケンスだけ
  • イ最低でも2つのアイテムを持つシーケンス
  • ウ要素数が3個以上のシーケンスだけ
  • エ文字列やイテレーターも含むあらゆる反復可能オブジェクト
答えと解説を見る
イ最低でも2つのアイテムを持つシーケンス正解
解説

正解は「最低でも2つのアイテムを持つシーケンス」である。公式チュートリアル4.7は、タプルとリストのパターンは任意のシーケンスと一致するが、重要な例外としてイテレーターや文字列ではマッチしないと述べ、[x, y, *rest]のような拡張アンパックをサポートし、(x, y, *_)は最低でも2つのアイテムを持つシーケンスにマッチすると説明している。*_は残りの要素をすべて受け取るワイルドカードであり、残りの個数が0個でも受け取れるため、x, yに対応する先頭2つさえあればマッチする。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.7 match 文、2026-09-28確認)

問題番号: py3b-133
問題番号 py3b-133 の誤りを報告する
第21問 ・ 関数の定義

公式チュートリアル4.8は、Pythonにおける関数への実引数の渡し方についてどのように説明しているか。

  • ア値渡し(call by value)であり、脚注でもオブジェクトへの参照渡しとは全く異なる仕組みだと明記している
  • イ参照渡し(call by reference)であり、Cのポインタ渡しと全く同じ仕組みである
  • ウ値渡し(call by value)と呼ばれるが、その値とは常にオブジェクトへの参照であり、脚注ではオブジェクトへの参照渡しと言った方がより正確だとしている
  • エ引数の渡し方は変数の型によって値渡しと参照渡しが自動的に切り替わる
答えと解説を見る
ウ値渡し(call by value)と呼ばれるが、その値とは常にオブジェクトへの参照であり、脚注ではオブジェクトへの参照渡しと言った方がより正確だとしている正解
解説

正解は「値渡し(call by value)と呼ばれるが、その値とは常にオブジェクトへの参照であり、脚注ではオブジェクトへの参照渡しと言った方がより正確だとしている」である。公式チュートリアル4.8は、実引数は値渡し(call by value)で関数に渡され、ここでの値とは常にオブジェクトへの参照をいうと述べ、脚注で「オブジェクトへの参照渡し (call by object reference) という言ったほうがより正確」と補足している。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.8 関数を定義する、2026-09-28確認)

問題番号: py3b-134
問題番号 py3b-134 の誤りを報告する
第22問 ・ コーディングスタイル

PEP 8が推奨するコーディングスタイルとして、公式チュートリアル4.10が挙げているものはどれか。

  • アインデントには空白ではなくタブを使う
  • イソースコードの行の幅に制限は設けない
  • ウ演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れない
  • エコメントは複数行にわたってまとめて書く
答えと解説を見る
ウ演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れない正解
解説

正解は「演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れない」である。公式チュートリアル4.10は「演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れないこと: a = f(1, 2) + g(3, 4) 。」と述べている。同節はインデントに空白4つを使いタブは使わないこと、ソースコードの幅が79文字を越えないように行を折り返すこと、関数やクラスの区切りに空行を使うこと、可能ならコメントは行に独立で書くことも挙げており、これらは選択肢0・1・3の内容と反対または別の論点の説明になる。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.10 コーディングスタイル、2026-09-28確認)

問題番号: py3b-135
問題番号 py3b-135 の誤りを報告する
第23問 ・ for文とrange

range(10) をそのままインタラクティブシェルで評価して表示すると、どのように表示されるか。

  • ア[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] というリストとして表示される
  • イ0から9までの値が改行区切りで表示される
  • ウ10 とだけ表示される
  • エrange(0, 10) と表示される
答えと解説を見る
エrange(0, 10) と表示される正解
解説

正解は「range(0, 10) と表示される」である。公式チュートリアル4.3は、range(10) をそのまま出力すると range(0, 10) と表示される例を示し、「range() が返すオブジェクトは、いろいろな点でリストであるかのように振る舞いますが、本当はリストではありません」「実際にリストを作るわけではないので、スペースの節約になります」と述べている。反復可能なオブジェクトを受け取る関数の例としてsum(range(4))が6になる例も示している。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.3 range() 関数、2026-09-28確認)

問題番号: py3b-136
問題番号 py3b-136 の誤りを報告する
第24問 ・ ラムダ式とドキュメンテーション文字列

ラムダ式について、公式チュートリアル4.9.6の説明として正しいものはどれか。

  • ア複数の文からなる処理も自由に書け、通常の関数定義とは別の独立した仕組みである
  • イ定義したスコープの外側にある変数は一切参照できない
  • ウ関数オブジェクトが要求される場所では使えず、変数への代入専用の構文である
  • エ構文上単一の式に制限されており、意味付け的には通常の関数定義に構文的な糖衣をかぶせたものに過ぎない
答えと解説を見る
エ構文上単一の式に制限されており、意味付け的には通常の関数定義に構文的な糖衣をかぶせたものに過ぎない正解
解説

正解は「構文上単一の式に制限されており、意味付け的には通常の関数定義に構文的な糖衣をかぶせたものに過ぎない」である。公式チュートリアル4.9.6は「ラムダ式は、構文上単一の式に制限されています」「意味付け的には、ラムダ形式は単に通常の関数定義に構文的な糖衣をかぶせたものに過ぎません」と述べ、ラムダ式の関数は関数オブジェクトが要求されている場所ならどこでも使えるとしている。また、入れ子構造になった関数定義と同様、ラムダ式もそれを取り囲むスコープから変数を参照できるとも説明している。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.9.6 ラムダ式、2026-09-28確認)

問題番号: py3b-137
問題番号 py3b-137 の誤りを報告する
第25問 ・ match文

match point: の中で case Point(x, y) if x == y: に続けて case Point(x, y): を書いた。Point(3, 5) が渡されたとき、if x == y の部分について正しい説明はどれか。

  • アガードが false のため match は次の case ブロックの処理に移り、2つ目の case に一致する
  • イガードが false のため match 文全体が終了し、どの case も実行されない
  • ウガードが false のときは SyntaxError が発生する
  • エガードを評価する前には値が取り込まれないため、x と y はガードの中で使えない
答えと解説を見る
アガードが false のため match は次の case ブロックの処理に移り、2つ目の case に一致する正解
解説

正解は「ガードが false のため match は次の case ブロックの処理に移り、2つ目の case に一致する」である。公式チュートリアル4.7は、パターンに if 節を追加でき、これを「ガード」と呼ぶと述べている。ガードが false の場合、match は次の case ブロックの処理に移動し、ガードを評価する前に値が取り込まれるとも説明している。Point(3, 5) は x == y が false なので、最初の case は実行されず、次の case Point(x, y): が一致する。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.7 match 文、2026-09-30確認)

問題番号: py3b-148
問題番号 py3b-148 の誤りを報告する
第26問 ・ match文

config = {"bandwidth": 100, "latency": 5, "jitter": 2} に対して match config: と case {"bandwidth": b, "latency": l}: を書いた。このパターンについて正しい説明はどれか。

  • ア辞書のキーが3つあるためマッチせず、この case は実行されない
  • イマッチして b に 100、l に 5 が取り込まれ、jitter のキーは無視される
  • ウマッチするが、jitter のキーが残っているため TypeError が発生する
  • エマッチして、jitter の値は自動的に変数 rest に取り込まれる
答えと解説を見る
イマッチして b に 100、l に 5 が取り込まれ、jitter のキーは無視される正解
解説

正解は「マッチして b に 100、l に 5 が取り込まれ、jitter のキーは無視される」である。公式チュートリアル4.7は、マッピングパターン {"bandwidth": b, "latency": l} は辞書から "bandwidth" と "latency" の値を取り込み、シーケンスパターンとは異なりそれ以外のキーは無視されると述べている。残りのキーを取り込みたい場合は **rest と書く必要があり、自動では rest に入らない。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.7 match 文、2026-09-30確認)

問題番号: py3b-149
問題番号 py3b-149 の誤りを報告する
第27問 ・ match文

次の関数がある。def f(status): match status: case 400: return "Bad request" / case 401 | 403 | 404: return "Not allowed" / case _: return "Other"。f(403) と f(500) の戻り値の組はどれか。

  • ア"Bad request" と "Other"
  • イ"Not allowed" と "Not allowed"
  • ウ"Other" と "Other"
  • エ"Not allowed" と "Other"
答えと解説を見る
エ"Not allowed" と "Other"正解
解説

正解は「"Not allowed" と "Other"」である。公式チュートリアル4.7は、複数のリテラルを | (「or」)で組み合わせて1つのパターンにでき、case 401 | 403 | 404: が一例だと述べている。f(403) は 401・403・404 のいずれかに一致するので "Not allowed" を返す。f(500) はどの個別のパターンにも一致せず、最後の case _ がワイルドカードとして働くため "Other" を返す。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.7 match 文、2026-09-30確認)

問題番号: py3b-150
問題番号 py3b-150 の誤りを報告する
第28問 ・ 関数の定義

x = 10 と書いたあと、def f(): x = 20 を定義して f() を呼び出し、続けて print(x) を実行した。表示される値と理由の組み合わせとして正しいものはどれか。

  • ア20 が表示される。関数の中の代入はグローバル変数を書き換える
  • イNameError が発生する。関数の中でグローバル変数と同じ名前を使えない
  • ウTypeError が発生する。関数の中ではグローバル変数に代入できない
  • エ10 が表示される。global 文で指定しない限り、関数の中の代入はグローバル変数を変えない
答えと解説を見る
エ10 が表示される。global 文で指定しない限り、関数の中の代入はグローバル変数を変えない正解
解説

正解は「10 が表示される。global 文で指定しない限り、関数の中の代入はグローバル変数を変えない」である。公式チュートリアル4.8は、関数の中ではグローバル変数や外側の関数の変数に、global 文や nonlocal 文で指定しない限り直接値を代入できない(参照はできる)と説明している。関数を実行するとローカル変数のための新たなシンボルテーブルが用意されるため、f() の中の x = 20 は関数のローカルな x への代入になり、外側の x は 10 のままである。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.8 関数を定義する、2026-09-30確認)

問題番号: py3b-151
問題番号 py3b-151 の誤りを報告する
第29問 ・ 関数の定義

def greet(name): return "Hi " + name を定義したあと、say = greet を実行した。公式チュートリアル4.8の説明に沿った、この say について正しいものはどれか。

  • アsay は greet のコピーとして作られた別の関数オブジェクトを指す
  • イsay = greet は greet を呼び出し、その戻り値を say に代入する
  • ウsay も greet と同じ関数オブジェクトを指し、say("A") で "Hi A" が得られる
  • エsay に代入すると greet という名前は使えなくなる
答えと解説を見る
ウsay も greet と同じ関数オブジェクトを指し、say("A") で "Hi A" が得られる正解
解説

正解は「say も greet と同じ関数オブジェクトを指し、say("A") で "Hi A" が得られる」である。公式チュートリアル4.8は、関数の定義を行うと関数名は関数オブジェクトとともに現在のシンボルテーブルに取り入れられ、他の名前も同じ関数オブジェクトを指すことができ、その関数にアクセスするために使用できると述べている。例として f = fib のあとに f(100) で呼び出せることを示している。名前が増えるだけで、関数オブジェクトは複製されず、元の名前も使い続けられる。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.8 関数を定義する、2026-09-30確認)

問題番号: py3b-152
問題番号 py3b-152 の誤りを報告する
第30問 ・ break・continue・ループのelse

def first_negative(nums): の中で for n in nums: if n < 0: return n を書き、for ループに else: print("負の数なし") を付け、最後に return None とした。first_negative([3, -1, 2]) の結果を print() で表示し、続けて first_negative([3, 1, 2]) を呼び出した。出力として正しいものはどれか。

  • ア-1 の1行のみが出力される
  • イ"負の数なし"、-1、"負の数なし" の3行が出力される
  • ウ-1 と "負の数なし" の2行が、この順で出力される
  • エ-1 と None の2行が出力される
答えと解説を見る
ウ-1 と "負の数なし" の2行が、この順で出力される正解
解説

正解は「-1 と "負の数なし" の2行が、この順で出力される」である。公式チュートリアル4.5は、ループが break によって終了した場合は else 句は実行されず、return や例外の発生によってループが途中で終了した場合にも else 節の実行はスキップされると述べている。1回目の呼び出しは -1 に達した時点で return するため else が実行されず、print() が -1 を表示する。2回目は負の数がなくループが最後まで進むので else が実行され、「負の数なし」が出力される。2回目の戻り値 None は print() で表示していないので出力されない。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.5 ループでの break 文、continue 文、else 節、2026-09-30確認)

問題番号: py3b-153
問題番号 py3b-153 の誤りを報告する
第31問 ・ break・continue・ループのelse

公式チュートリアル4.5は、ループの else 句の働きを、別の構文の else 句にたとえて説明している。たとえられているのはどれか。

  • アif 文の else 句。条件が偽のときに実行される
  • イtry 文の else 句。例外が発生しなかったときに実行される
  • ウtry 文の finally 句。常に実行される
  • エmatch 文の case _。どのパターンにも一致しなかったときに実行される
答えと解説を見る
イtry 文の else 句。例外が発生しなかったときに実行される正解
解説

正解は「try 文の else 句。例外が発生しなかったときに実行される」である。公式チュートリアル4.5は、ループの else 句は if 文の else よりも try 文の else に似ていると述べている。try 文の else 句は例外が発生しなかった時に実行され、ループの else 句は break されなかった場合に実行される。「条件が偽のとき」という if 文の else の感覚で読むと、break の有無で決まる実行条件を取り違えやすい。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.5 ループでの break 文、continue 文、else 節、2026-09-30確認)

問題番号: py3b-154
問題番号 py3b-154 の誤りを報告する
第32問 ・ コーディングスタイル

公式チュートリアル4.10が挙げる命名の慣習として正しい組み合わせはどれか。

  • アクラス名は lowercase_with_underscores、関数名は UpperCamelCase
  • イクラス名も関数名も UpperCamelCase
  • ウクラス名は UpperCamelCase、関数名やメソッド名は lowercase_with_underscores
  • エクラス名は UpperCamelCase、関数名は UpperCamelCase、メソッドの第1引数は cls
答えと解説を見る
ウクラス名は UpperCamelCase、関数名やメソッド名は lowercase_with_underscores正解
解説

正解は「クラス名は UpperCamelCase、関数名やメソッド名は lowercase_with_underscores」である。公式チュートリアル4.10は、慣習として UpperCamelCase をクラス名に、lowercase_with_underscores を関数名やメソッド名に使い、常に self をメソッドの第1引数の名前として使うことを挙げている。クラスと関数の書き方を入れ替えた選択肢や、第1引数を cls とした選択肢は、この記述と合わない。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.10 間奏曲: コーディングスタイル、2026-09-30確認)

問題番号: py3b-155
問題番号 py3b-155 の誤りを報告する
第33問 ・ コーディングスタイル

コードを世界中の人に使ってもらうつもりで書く場合、文字のエンコーディングと識別子について公式チュートリアル4.10が述べている内容はどれか。

  • アPython のデフォルトである UTF-8 かプレーン ASCII を使い、他の言語を話す人が読む可能性があるなら非 ASCII 文字を識別子に使わない
  • イ各国の言語に合わせた風変りなエンコーディングを使い、識別子にも母語の文字を積極的に使う
  • ウ常にプレーン ASCII だけを使い、UTF-8 は使ってはならない
  • エエンコーディングは自由に選んでよく、識別子は必ず非 ASCII 文字にする
答えと解説を見る
アPython のデフォルトである UTF-8 かプレーン ASCII を使い、他の言語を話す人が読む可能性があるなら非 ASCII 文字を識別子に使わない正解
解説

正解は「Python のデフォルトである UTF-8 かプレーン ASCII を使い、他の言語を話す人が読む可能性があるなら非 ASCII 文字を識別子に使わない」である。公式チュートリアル4.10は、コードを世界中で使ってもらうつもりなら風変りなエンコーディングは使わず、Python のデフォルト UTF-8 またはプレーン ASCII が最も上手くいくと述べている。あわせて、他の言語を話す人がコードを読む可能性が少しでもあるなら、非 ASCII 文字を識別子に使うべきではないとしている。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 4.10 間奏曲: コーディングスタイル、2026-09-30確認)

問題番号: py3b-156
問題番号 py3b-156 の誤りを報告する
第34問 ・ if文

公式チュートリアル4.1は、キーワード elif をどのように説明しているか。

  • ア'else if' を短くしたもので、過剰なインデントを避けるのに役立つ
  • イelse の直後に必ず1つだけ置かなければならない特別な節である
  • ウif の条件が真だったときに、続けて必ず実行される節である
  • エfor 文の中でだけ使える専用のキーワードである
答えと解説を見る
ア'else if' を短くしたもので、過剰なインデントを避けるのに役立つ正解
解説

正解は「'else if' を短くしたもので、過剰なインデントを避けるのに役立つ」である。公式チュートリアル4.1は、ゼロ個以上の elif 部を使うことができ、else 部を付けることもできると述べたうえで、キーワード 'elif' は 'else if' を短くしたもので過剰なインデントを避けるのに役立つと説明している。一連の if ... elif ... elif ... は、他の言語における switch 文や case 文の代用にもなると書かれている。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-10-26確認)

問題番号: py3b-213
問題番号 py3b-213 の誤りを報告する
第35問 ・ if文

次のコードを実行したときの出力はどれか。 x = 1 if x < 0: print('Negative') elif x == 0: print('Zero') elif x == 1: print('Single') else: print('More')

  • アZero
  • イSingle と More が1行ずつ順に表示される
  • ウSingle
  • エNegative
答えと解説を見る
ウSingle正解
解説

正解は「Single」である。if ... elif ... elif ... else の連なりは、上から順に条件を調べ、最初に真になった節の本体だけを実行して全体を抜ける。x は 1 なので、x < 0 は偽、x == 0 も偽、3つ目の x == 1 が真になり、'Single' が表示される。それより後ろの else 部は実行されない。公式チュートリアル4.1は、ゼロ個以上の elif 部と、付けても付けなくてもよい else 部を持つこの形を説明している。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-10-26確認)

問題番号: py3b-214
問題番号 py3b-214 の誤りを報告する
第36問 ・ for文とrange

次のコードを実行したときの出力はどれか。 print(list(range(0, 10, 3)))

  • ア[0, 3, 6]
  • イ[3, 6, 9]
  • ウ[0, 3, 6, 9, 12]
  • エ[0, 3, 6, 9]
答えと解説を見る
エ[0, 3, 6, 9]正解
解説

正解は「[0, 3, 6, 9]」である。range(0, 10, 3) は、開始値 0 から 3 ずつ増やした値を、終端値 10 の手前まで生成する。0、3、6、9 の次は 12 になり、終端値 10 を超えるため生成されない。公式チュートリアル4.3は、list(range(0, 10, 3)) が [0, 3, 6, 9] になる例を示し、指定した終端値は生成されるシーケンスには入らないと述べている。ステップを省略すると 1 ずつ増えるが、第3引数で刻みを変えることもできる。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-10-26確認)

問題番号: py3b-215
問題番号 py3b-215 の誤りを報告する
第37問 ・ for文とrange

次のコードを実行したときの出力はどれか。 print(list(range(-10, -100, -30)))

  • ア[-10, -40, -70, -100]
  • イ[-10, -40, -70]
  • ウ[-30, -60, -90]
  • エ[](何も生成されず空のリストになる)
答えと解説を見る
イ[-10, -40, -70]正解
解説

正解は「[-10, -40, -70]」である。range の増加量(ステップ)は負でもよく、range(-10, -100, -30) は -10 から 30 ずつ減らした値を、終端値 -100 に届く手前まで生成する。-10、-40、-70 の次は -100 になるが、終端値そのものは含まれないため生成されない。公式チュートリアル4.3は、この例が [-10, -40, -70] になることを示し、増加量は負でもよく「ステップ」と呼ばれることもあると述べている。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-10-26確認)

問題番号: py3b-216
問題番号 py3b-216 の誤りを報告する
第38問 ・ for文とrange

ユーザーの状態を保持した辞書 users を for 文で反復しながら、同じ辞書の内容を変更したい。公式チュートリアル4.2が述べる、扱いやすい方法はどれか。

  • ア元のコレクションを反復しながら直接変更する書き方が、最も分かりやすいと述べている
  • イ反復中の変更は必ず例外になるため、変更自体を書けないと述べている
  • ウコレクションのコピーに対して反復処理をするか、新しいコレクションを作成する
  • エ変更するときは for 文をやめて、必ず while 文に書き換えると述べている
答えと解説を見る
ウコレクションのコピーに対して反復処理をするか、新しいコレクションを作成する正解
解説

正解は「コレクションのコピーに対して反復処理をするか、新しいコレクションを作成する」である。公式チュートリアル4.2は、コレクションを反復処理しながら同じコレクションを変更するコードは正しく書くのが難しくなることがあり、通常はコレクションのコピーを反復処理するか、新しいコレクションを作成する方が簡単だと述べている。例として、users.copy().items() のようにコピーに対して反復する書き方を示している。コレクションを書き換えながら回すと、どの要素まで処理したかを追いにくくなるため、元のコレクションは触らずに済む形に整えるのが読みやすさの面でも有利になる。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-10-26確認)

問題番号: py3b-217
問題番号 py3b-217 の誤りを報告する
第39問 ・ pass文

新しい関数の中身をまだ書かず、後で実装するまでの仮置きにしたい。公式チュートリアル4.6が示す書き方はどれか。

  • ア関数の本体に pass 文を書いておく
  • イ本体を何も書かず、def の行だけを書く
  • ウ本体に return だけを書き、戻り値は必ず None に固定する
  • エdef の行の末尾にセミコロンを付けて本体を省略する
答えと解説を見る
ア関数の本体に pass 文を書いておく正解
解説

正解は「関数の本体に pass 文を書いておく」である。公式チュートリアル4.6は、pass 文は何もせず、文を書くことが構文上要求されているがプログラム上何の動作もする必要がないときに使うと述べ、そのもう1つの使い道として、新しいコードを書いているときの関数や条件文の仮置きの本体を挙げている。例として def initlog(*args): の本体に pass を書き、あとで実装することを忘れないようにする書き方が示されている。未実装の関数でも構文上は本体が必須なので、pass を置けばプログラム全体を実行できる状態のまま、あとから中身を書き足していける。

https://docs.python.org/ja/3/tutorial/controlflow.html (Python公式チュートリアル 第4章 制御構造ツール、2026-10-26確認)

問題番号: py3b-218
問題番号 py3b-218 の誤りを報告する
このページは表示速度を保つため最初の39問を掲載しています。第40問以降を読む → 全43問は演習画面でも解けます。

執筆: ミナト編集部(運営者情報を見る)