出題範囲
- Control Flow
- Data Structures
- Functions & Exceptions
- OOP & Modules
- Python Fundamentals
例題に挑戦
スキルサートのAIが生成した演習問題のサンプルです。アプリでは毎週新しい問題が追加されます。
例題1
Pythonのループ制御における else 句の動作について、正しい説明はどれか。
- while ループが break 文によって中断された場合にのみ実行される。
- while ループの条件式が最初に判定された時点で False であっても実行される。
- for ループ内で例外が発生し、プログラムが異常終了した際に実行される。
- continue 文が実行されるたびに、その回の反復の終わりに実行される。
- else 句は if 文にのみ付随するものであり、ループ構造で使用すると構文エラーになる。
解答と解説を見る
正解: while ループの条件式が最初に判定された時点で False であっても実行される。
正解は「while ループの条件式が最初に判定された時点で False であっても実行される。」です。Pythonのループ(forおよびwhile)における else 句は、ループが break 文によって途中で終了することなく、反復が正常に完了した(条件が False になった、またはイテレータを使い切った)場合に実行されます。そのため、最初から条件を満たさない場合でも、ループが中断されたわけではないため else ブロックが実行されます。
例題2
Pythonの制御フロー(if, for, while)に関する記述のうち、誤っているものはどれか。
- break 文は、現在実行されている最も内側のループを即座に終了させる。
- if 文の elif 節は、先行する if または elif の条件がすべて False だった場合にのみ評価される。
- break 文によってループを抜けた場合、そのループに付随する else ブロックも実行される。
- range(start, stop, step) 関数において、step に負の値を指定して逆順のループを作ることができる。
- continue 文は、現在の反復の残りの処理をスキップし、次の反復の判定へ移る。
解答と解説を見る
正解: break 文によってループを抜けた場合、そのループに付随する else ブロックも実行される。
正解は「break 文によってループを抜けた場合、そのループに付随する else ブロックも実行される。」です。これが誤っている理由は、Pythonの仕様において else ブロックは「ループが break 文によって終了しなかった場合」にのみ実行されるからです。break 文が実行されると、else ブロックはスキップされます。他の選択肢はすべてPythonの制御フローに関する正確な記述です。
重要用語
- リスト (List)
- 複数の要素を順序付けて管理するデータ構造で、角括弧[]を使用して定義します。ミュータブル(変更可能)な性質を持ち、要素の追加、削除、変更が自由に行えます。Pythonにおいて最も頻繁に使用されるコンテナの一つであり、異なるデータ型の要素を混在させることも可能です。試験では、appendやpop、insertなどのメソッドの挙動が非常によく問われます。
- タプル (Tuple)
- リストに似ていますが、丸括弧()を使用して定義され、一度作成すると内容を変更できないイミュータブル(不変)な性質を持ちます。データの書き換えを防ぎ、安全性を高めたい場合や、辞書のキーとして利用したい場合に適しています。要素の順序は保持されますが、要素の変更や削除を行うメソッドは提供されていません。試験ではリストとの性質の違いが重要視されます。
- 辞書 (Dictionary)
- キー(Key)と値(Value)をペアにして格納するデータ構造で、波括弧{}を使用します。各キーは一意である必要があり、キーを指定することで対応する値を高速に検索できます。キーにはイミュータブルな型(文字列や数値など)のみが使用可能です。データの順序はPython 3.7以降で保持されるようになりました。値の取得、更新、keys()やvalues()メソッドの使い方が頻出です。
- スライス (Slicing)
- リストや文字列、タプルなどのシーケンス型から、特定の部分を抽出する操作です。[開始:終了:ステップ]の形式で記述し、終了インデックスの要素は含まれない点に注意が必要です。負のインデックスを使用して末尾からの位置を指定することもできます。効率的なデータ操作手法として、試験ではスライスによって抽出された結果や、逆順にする方法などがよく問われます。
- 不変性 (Immutability)
- オブジェクトの作成後にその内容や状態を変更できない性質のことです。Pythonのデータ構造では、タプル、文字列、数値、フローズンセットなどがこれに該当します。これらに対して要素の書き換えを試みるとエラーが発生します。変更が必要な場合は、既存の値を書き換えるのではなく、新しいオブジェクトを生成して代入する必要があります。データ保護や一貫性の維持に貢献します。
- インデックス (Index)
- シーケンス内の各要素の位置を示す整数のことです。Pythonのインデックスは0から始まります。例えば、5つの要素を持つリストのインデックスは0から4までとなります。負のインデックスも利用可能で、-1は最後の要素、-2は最後から2番目の要素を指します。範囲外のインデックスを指定するとIndexErrorが発生するため、正しい範囲の把握はプログラム作成の基本です。
- in演算子 (in Operator)
- 特定の値がリスト、タプル、辞書などのコレクション内に存在するかどうかを判定し、真偽値(True/False)を返す演算子です。辞書に対して使用した場合、デフォルトでは「キー」の中に存在するかをチェックします。if文での条件判定やfor文での反復処理において非常に多用されます。試験では、特定のデータ構造において検索効率や対象が何であるかを問う問題が出題されます。
- メソッド (Method)
- 特定のデータ型(オブジェクト)に紐付けられた関数のことです。「オブジェクト.メソッド名()」の形式で呼び出します。リストのappend()、辞書のget()、文字列のupper()などが代表的です。各データ構造がどのようなメソッドを持ち、それによって元のデータが変更される(インプレース操作)のか、あるいは新しい値を返すのかを区別することが試験対策として極めて重要です。
PCAP – Certified Associate in Python Programmingの対策はアプリで
AIが毎週生成する新作問題・ランクマッチ・週次ランキング・AI診断で「続けられる」資格学習を。無料で始められます。