Python3 エンジニア認定実践試験
結果
合否
2026.01.18に試験を受け合格
コメント
webの練習問題と類似の問題が少なかった。
受ける人は、webの練習問題の範囲だけでなく書籍を片隅まで読むや、思いっきって1回受けてみるのが良いかも知れません。
前提
出題のメイン
| 章 | 内容 | 件数 | 割合 | 備考 |
|---|---|---|---|---|
| 3章 | Pythonの言語仕様 | 7 | 17.5% | |
| 4章 | Pythonのクラス | 3 | 7.5% | |
| 6章 | テキストの処理 | 4 | 10.0% | |
| 9章 | データ型とアルゴリズム | 5 | 12.5% | 9.3 bisectは除く9.5 pprint は除く |
| 16章 | テスト | 3 | 7.5% | 16.4 pytest は除く16.5 pydoc は除く |
出題されない範囲
| 章 | 内容 |
|---|---|
| 5.2章 | mypy |
| 7章 | 数値の処理 |
| 8.4章 | dateutil |
| 9.3章 | bisect |
| 9.5章 | pprint |
| 12章 | データ圧縮とアーカイブと永続化 |
| 13.3章 | configparser |
| 13.4章 | PyYAML |
| 13.5章 | openpyxl |
| 13.6章 | Pillow |
| 14.3章 | Requests |
| 14.5章 | emai |
| 15章 | HTML/XMLを扱う |
| 16.4章 | pytest |
| 16.5章 | pydoc |
| 17.3章 | traceback |
| 18.3章 | cryptography |
| 19章 | 並行処理、並列処理 |
ほぼ出題されない範囲
| 章 | 内容 | 件数 | 割合 | 備考 |
|---|---|---|---|---|
| 1章 | Pythonの環境 | 1 | 2.5% | |
| 18章 | 暗号関連 | 1 | 2.5% | 18.3 cryptography は除く |
引用
https://www.pythonic-exam.com/exam/jissen
1章 Pythonの環境
- python命名規則
関数や変数の名前は、lowercase
パッケージとモジュールの名前は、lowercase
クラスの名前、例外はCamelCase
3章 Pythonの言語環境(例外,with,引数,ジェネレーター,デコレーター)
コンテキストマネージャ
- contextlib
- withを自作したくなった時に利用する
- 前処理と後処理を必ずセットで行いたい処理を短く・安全に・読みやすく書きたいときに使う
ジェネレイター(内包表記を以下※()で書くとジェネレイターになる)
gen = (x * 2 for x in range(5))
デコレーター
---
### @property
* **メソッドを「属性のように」使えるようにする**
* `obj.method()` を `obj.method` の形で参照可能にする
---
### @patch
* **ユニットテストで、指定したメソッドやオブジェクトをモックに置き換える**
* テスト対象を外部依存から切り離すために使う
---
### @classmethod
* **メソッド内でクラス自身を参照できるようにする**
* 第1引数としてクラス(`cls`)を受け取る
---
### @staticmethod
* **クラスやインスタンスに依存しないメソッドを定義する**
* `self` や `cls` を使わない関数をクラス内に置くためのもの
---
4章 class
eq()メソッドは比較演算子==の処理を変更する。(なので,==で繋げた場合が変更されるよ)
4章 zip関数 or zip_longest関数
zip_longest関数だと,長い方に合わせることができる。ない場所には,Noneが入る
6.3章 正規表現re
search 指定された文字列が正規表現に一致するか(全て)
match 指定された文字が正規表現に一致するか(文字列の先頭のみ)
オプション
「re.I」もしくは「re.IGNORECASE」を付けることで、大文字・小文字を無視できます。
「re.A」もしくは「re.ASCII」は、半角英数字などのASCII文字のみにマッチさせるオプションです。
comlie を使うことで以下の書き方が可能
import re
pattern = re.complie('x.z')
pattern.search('aaaa')
返り値は, マッチオブジェクト or None
obj.group(0) は全体を返す
obj.group(1) は1グループ目を返す(listなどとは異なって,0ではなく1からはじまる)
よく使う正規文字
\d 数字
\D 数字以外
\s 空白文字
\S 空白文字以外
\w 任意の英数字
\W 英数字以外
. 任意の1文字
^ 先頭
$ 末尾
* 0文字以上の繰り返し
+ 1文字以上の繰り返し
? 0回か1回の繰り返し
{m} m回の繰り返し
{m, n} m回以上、n回以下の繰り返し
[...] 指定したいずれかの文字
[^...] 指定したいずれかの文字以外
(x|y) xかyの選択
6.4章 Unicodedata
lookup(name) # unicodeに対応する値を返す
unicodedata.name(chr) # chrに対応するunicodeを返す
unicodedata.normalize('NFKC','aaaaa') # 英数字は半角,日本語は全角に正規化できる
8章 日付と時刻の処理
weekday()メソッドは、月曜日を0、日曜日を6として返す。
isoweekday()メソッドは、月曜日を1、日曜日を7として返す。
9章 データ型とアルゴリズム
(operator、collections、enum、itertools、copy)
9.1 ソート operator
- itemgetter()
- attrgetter()
9.2 コンテナー型を扱う collections
9.4 enum
import enum
@enum.unique
class Sample(enum.Enum):
MUSIC = 1
hogehoge = 1
上記のデコレーターで,同じ値は適宜をしないようにできる。(上記の場合はエラーになる)
urlparse()メソッドはURLを分解する。
そして,parse_qs()は辞書を返し、parse_qsl()はタプルを要素に持つリストを返す。
13章 特定のデータフォーマットを扱う(csv,json)
csvモジュール
csvモジュールのreader()関数とwriter()関数の引数
【quotechar】
シングルクオートなどの引用符の指定
【delimiter】
タブなどの区切り指定
【lineterminater】
各行の終端文字の指定
17章 デバッグ
(timeit、logging)
pdbモジュールを呼び出してプログラムを実行すると、異常終了した際に自動的にデバックモードに移行する。
loggingモジュール
標準で以下の6つのログレベルが定義されている。上から深刻度が高い
CRITICAL
ERROR
WARNING
INFO
DEBUG
NOTSET
辞書の処理
keys() → キーだけを取得
values() → 値だけを取得
items() → (キー, 値) のペアを取得 ← これが正解
timeit
def my_function():
return 2
正しい
timeit.timeit('my_function()', globals=globals(), number=1000)
これも正しい
timeit.timeit(my_function, number=1000)
chain() の引数は イテラブルならOKです。
リスト → OK
タプル → OK
文字列 → OK(文字列はイテラブル)
※intは渡せない。
copy
copyfileは内容
copyは内容と権限
copy2は内容と権限とメタデータ
練習問題
あまり触れたことないリスト
- timeitモジュール
- breakpoint()関数
- unittest.mock
- doctest
- shutil
- sys
- collectionsモジュールのCounterオブジェクト
- デコレーター
- defaultdict
復習する内容
中級
問題03 PEP8の命名規則。
問題07 func(num, **dic)らへんの関数の引数
問題29 p.glob() はジェネレータを返す。
問題37 MagicMockの,assert_called_once()と,assert_called_wtihの利用。
assert_called_once()は,モックが一回だけ呼ばれていた場合は,None,2回以上呼ばれていた場合は,AssertionErrorが返る。
assert_called_with()は,指定していたモックが直前に呼ばれていた場合は,Noneを返し,直前でない場合や1回も呼ばれていない場合は,AssertionErrorが返る。
上級
問題10 functools.wraps
問題12 dataclass系の問題。 asdictとastupleのみ
問題25 itertools系の問題
問題26 copy系の問題。copy.copyは参照で,copy.deepcopyはコピーなど
問題37 patch系の問題
問題39 logging系の問題で,階層構造の定義系の問題