Python3エンジニア認定基礎試験 第4章 制御構造ツール 予想問題と解説
Python3エンジニア認定基礎試験「第4章 制御構造ツール」の予想問題を9問収録しています。各問を解説つきで掲載し、全問は演習画面で解けます。公式シラバスの範囲で作成しています。
この章の要点
break・continue・ループのelse・for文とrange・引数の指定・if文・ラムダ式とドキュメンテーション文字列・pass文・match文・関数の定義などを扱う分野です。全9問(基礎6問・標準3問)を収録しています。
- break・continue・ループのelse
- for文とrange
- 引数の指定
- if文
- ラムダ式とドキュメンテーション文字列
- pass文
- match文
- 関数の定義
情報源と編集区分
公式範囲を確認し、問題数・難易度・確認点は当サイトが集計・編集。 一次情報確認日: 2026-09-11。
試験概要(公式)確認しておきたいポイント
当サイトの作問時に観察した、取り違えやすい論点です(公式の統計ではありません)。
- ループの else 節が実行される条件。break で抜けたときは実行されず、使い切って終わったときに実行される。return や例外で途中終了した場合も実行されない。
- range の終了値が含まれないこと。range(2, 10) は 9 までで、10 は含まれない。
- デフォルト引数の評価は定義時に一度だけ。可変オブジェクトをデフォルト値にすると呼び出し間で状態が残る。
- continue と break の混同。continue は反復を飛ばすだけでループを終わらせない。
この章の関連用語
この分野の問題で扱う用語です。意味があいまいなものは、用語集で定義を確認できます。
よくある質問
Q第4章 制御構造ツールは何問収録されていますか?
現在9問を収録しています。内訳は基礎6問・標準3問です。
Q第4章 制御構造ツールの頻出論点は何ですか?
break・continue・ループのelse・for文とrange・引数の指定・if文・ラムダ式とドキュメンテーション文字列・pass文・match文・関数の定義などが出題対象です(当サイト収録問題に基づく編集部集計)。
Q間違えた問題はどう復習すればいいですか?
誤答した選択肢のどこがずれていたかを解説で確認し、関連用語がある場合は用語集で定義に戻ってから再演習することをおすすめします。
for ループに else 節を付けたとき、else 節が実行されるのはどの場合か。
答えと解説を見る
正解は「ループが最後まで回り切り、break で抜けなかったとき」である。公式チュートリアルは「break を実行せずにループが終了すると、else 節が実行されます」と述べ、for 文については「ループ処理の最後のイテレーションが実行されたあと、つまり break が発生しなかった場合に実行されます」と記している。break で抜けた場合は else 節は実行されない。あわせて公式は「return や例外の発生によってループが途中で終了した場合にも else 節の実行はスキップされます」とも述べている。continue については公式に明示の記述は無いが、continue は今回の反復を飛ばして次へ進めるだけでループを終わらせないため、最後まで回り切れば else 節は実行される。反復対象が空の場合も本体は一度も実行されないままループは正常に終わるので else 節は実行され、「空のときだけ」という限定は誤りである。この性質は、公式が挙げる素数探索の例のように「探したが見つからなかった場合」の処理を else 節に置く書き方に使われる。
range(2, 10) が生成する値の並びはどれか。
答えと解説を見る
正解は「2, 3, 4, 5, 6, 7, 8, 9」である。range に2つの引数を渡した場合、1つ目が開始値、2つ目が終了値で、終了値は含まれない。そのため 2 から 9 までの8個の値が生成される。終了値を含めたい場合は range(2, 11) と書く。開始値を省略した range(10) は 0 から始まるため、1 から始まる並びにはならない。増分を指定するには3つ目の引数が必要で、2つの引数だけでは偶数に限定されない。
関数のデフォルト引数に可変オブジェクトを指定したとき、注意すべき挙動はどれか。
答えと解説を見る
正解は「デフォルト値は関数を定義した時点で一度だけ評価され、呼び出しごとに作り直されない」である。そのためリストや辞書のような可変オブジェクトをデフォルト値にすると、前の呼び出しで加えた要素が次の呼び出しにも残り、呼び出しを重ねるほど蓄積していく。呼び出しごとに新しく作り直されるわけではないので、毎回空から始めたい場合はデフォルト値を None にして関数の中で作る書き方をとる。可変オブジェクトをデフォルト引数に指定すること自体は文法上できるため、定義時にエラーにはならない。評価の順序を入れ替える必要があるという話でもない。
複数の条件を順に判定し、どれにも当てはまらない場合の処理も書きたい。用いる構文の並びはどれか。
答えと解説を見る
正解は「if / elif / else」である。Python では2つ目以降の条件を elif で書き、どれにも当てはまらない場合を else で書く。elseif という綴りは Python の構文には無い。else if と2語に分けて書くこともできず、otherwise という語も存在しない。switch / case / default は他の言語の構文で、Python では条件分岐に使わない。なお Python には match 文があるが、これは値の形に応じて分岐する別の構文で、case と組み合わせて使う。
リストの要素と、その位置を示す番号を同時に取り出しながらループしたい。用いる関数はどれか。
答えと解説を見る
正解は「enumerate()」である。enumerate はリストなどの反復可能オブジェクトから、位置を示す番号と要素の組を順に取り出す。range は連続した整数の並びを作る関数で、要素そのものは返さないため、要素を得るには別にインデックス指定が必要になる。len は要素数を返す関数で、ループの取り出しには直接使わない。zip は複数の並びから同じ位置の要素を組にして取り出す関数で、2つ以上の並びを同時に回す場面で使う。
関数定義の先頭に書いた文字列について、正しい説明はどれか。
答えと解説を見る
正解は「ドキュメンテーション文字列として扱われ、__doc__ から参照できる」である。関数定義の最初に置いた文字列はその関数の説明として扱われ、実行時にも __doc__ 属性から読み取れる。行頭に # を付けたコメントは実行時に残らないが、ドキュメンテーション文字列は文字列として残るため性質が違う。戻り値になるのは return で返した値であり、先頭の文字列は戻り値にならない。型の指定は関数のアノテーションで行い、__annotations__ に入るのはそちらである。
構文上は文が必要だが、何も実行させたくない。用いる文はどれか。
答えと解説を見る
正解は「pass」である。pass は何も行わない文で、構文上は文が必要な場所に置いて形を保つために使う。continue は今回の反復を飛ばして次へ進める文で、ループの中でしか使えず「何もしない」とは意味が違う。break はループを抜ける文で、これもループの中でしか使えない。return は関数から値を返して抜ける文で、何もしない文ではない。
match 文で、どのパターンにも当てはまらない場合を受けるために使う書き方はどれか。
答えと解説を見る
正解は「case にワイルドカードを書く」である。match 文ではどのパターンにも当てはまらない場合をワイルドカードのパターンで受ける。case を書かずに空行にする書き方は構文として成り立たない。match の直後に else を書く形も match 文の構文には無い。default という語は他の言語の分岐構文で使われるもので、Python の match 文では使わない。
return 文を書かずに終わる関数が返す値はどれか。
答えと解説を見る
正解は「None」である。関数の本体が return を通らずに終わった場合、戻り値は None になる。0 や空文字列が返るわけではなく、どちらも明示して返さなければ得られない。最後に評価した式の値が自動で返る言語もあるが、Python ではそうならず、返したい値は return で明示する必要がある。