Kodrill

標準ライブラリと環境

Python 3 エンジニア認定基礎試験

os・sys・math・random・statistics・datetime・json・re・collections/仮想環境と pip

問題数
11 問
合格ライン
70%
実行して確認済み
8 問
この分野の要点を読む6 章・約 10 分。実行して確かめたコード例と、試験でよくある引っかけをまとめています

ログインなしで試す

無料の 5 問を、1問ごとに正誤と解説を見ながら解けます。解答は保存されません。

5 問を試す

無料登録して学習を記録する

学習履歴・ダッシュボード・ブックマーク・模試モードが使えます。

★ 残り 6 問はプレミアム会員限定です

無料プランでは先頭 5 問まで解けます。プレミアムなら全問題・苦手問題の復習・広告非表示が使えます。
料金プランを見る

問題と解説を見る (無料)

登録しなくても、次の5問は問題文と解説をそのまま読めます。

標準ライブラリと環境の要点

内容の確認日: 2026-10-04

この分野は「Pythonチュートリアル」の第 10 章・第 11 章 (標準ライブラリのツアー) と第 12 章 (仮想環境とパッケージ) に対応します。Python に最初から付いている便利なモジュールの使い方と、プロジェクトごとにパッケージを管理する仕組みが問われます。

出題項目は「標準ライブラリ (os・math・random など)」「標準ライブラリ (json・re・datetime など)」「仮想環境とパッケージ」の 3 つです。関数の名前と戻り値を、実際の出力で確かめながら覚えましょう。

math・statistics・random

math は数学の関数を集めたモジュールです。math.gcd() (最大公約数)・math.factorial() (階乗)・math.ceil() (切り上げ)・math.floor() (切り捨て)・math.sqrt() (平方根) などがあります。math.floor(-2.1) は -3 のように、負の数では 0 から離れる方向に切り捨てます。

statistics は統計の関数を集めたモジュールで、mean() (平均)・median() (中央値)・mode() (最頻値) などがあります。

random は乱数のモジュールです。random.random() (0 以上 1 未満の小数)・randint(a, b) (a 以上 b 以下の整数)・choice(シーケンス)・shuffle(リスト)・sample(シーケンス, k) などがあります。random.seed(値) で乱数の種を固定すると、同じ乱数の並びが再現されます。

Python
import mathimport randomimport statistics​print(math.gcd(12, 18), math.factorial(4), math.ceil(2.1), math.floor(-2.1))data = [1, 2, 2, 3, 10]print(statistics.mean(data), statistics.median(data), statistics.mode(data))random.seed(42)first = [random.randint(1, 6) for _ in range(5)]random.seed(42)second = [random.randint(1, 6) for _ in range(5)]print(first == second)
ターミナル
python3 main.py
6 24 3 -3
3.6 2 2
True

平均の 3.6 は外れ値の 10 に引っ張られていますが、中央値の 2 は影響を受けにくい、という違いも押さえておきましょう。

os と sys

os は OS の機能を使うモジュールです。os.getcwd() (現在のディレクトリ)・os.environ (環境変数)・os.path.join() (パスの連結)・os.path.splitext() (拡張子の分離)・os.path.basename() (ファイル名の部分) などがあります。

sys.argv はコマンドライン引数のリストで、先頭の sys.argv[0] はスクリプト名です。実際の引数は sys.argv[1:] に入ります。

Python
import osimport sys​print(sys.argv[1:], len(sys.argv))print(os.path.splitext("report.final.txt"), os.path.basename("/tmp/a/b.txt"))print(os.path.join("data", "2026", "log.txt"))
ターミナル
python3 main.py x y
['x', 'y'] 3
('report.final', '.txt') b.txt
data/2026/log.txt

splitext は最後の . で分けます。os.path.join の区切り文字は OS によって変わります (この例は macOS・Linux の結果で、Windows では \ になります)。

datetime・json・re

datetime は日付と時刻を扱うモジュールです。date(年, 月, 日) で日付を作り、year・month などの属性で値を取り出します。timedelta で日付の足し算・引き算ができ、strftime(書式) で好きな形の文字列にできます (%Y は 4 桁の年、%m は 2 桁の月、%d は 2 桁の日)。

json.dumps() は Python のオブジェクトを JSON の文字列 (str) に、json.loads() は JSON の文字列を Python のオブジェクトに変換します。

re は正規表現のモジュールです。パターンには \ を多く使うので、r"..." の raw 文字列で書きます。re.search() は最初に一致した部分を表すマッチ・オブジェクト (一致しなければ None) を返し、group(0) で一致した全体、group(1) 以降で ( ) で囲んだ部分を取り出せます。re.findall() は一致したすべての文字列のリスト、re.sub() は置き換えた文字列を返します。

Python
import jsonimport refrom datetime import date, timedelta​d = date(2026, 4, 5)print(d.year, d + timedelta(days=30), d.strftime("%Y/%m/%d"))print(json.dumps({"ok": True, "n": None}), json.loads('[1, "a"]'))m = re.search(r"(\d+)-(\d+)", "TEL: 03-1234")print(m.group(0), m.group(1), re.findall(r"\d", "a1b22"), re.sub(r"\s+", " ", "a   b  c"))
ターミナル
python3 main.py
2026 2026-05-05 2026/04/05
{"ok": true, "n": null} [1, 'a']
03-1234 03 ['1', '2', '2'] a b c

collections と decimal

collections には、便利なコンテナが入っています。Counter は要素の出現回数を数え、most_common(n) で多い順に n 個を返します。deque は両端からの追加・取り出しが速いキューで、appendleft()・popleft() などが使えます。

小数は内部では 2 進数の近似値で表されるため、0.1 + 0.2 == 0.3 は False になります。お金の計算など正確な 10 進数の計算が必要なときは、decimal モジュールの Decimal を使います (Decimal("0.1") のように文字列で作ります)。

Python
from collections import Counter, dequefrom decimal import Decimal​c = Counter("banana")print(c["a"], c.most_common(1))q = deque([1, 2])q.appendleft(0)q.append(3)print(q.popleft(), list(q))print(0.1 + 0.2 == 0.3, Decimal("0.1") + Decimal("0.2") == Decimal("0.3"))
ターミナル
python3 main.py
3 [('a', 3)]
0 [1, 2, 3]
False True

ほかにも、品質管理のための doctest・unittest (テスト)、logging (ログの出力)、zlib (データの圧縮)、timeit (処理時間の計測) などが標準ライブラリに含まれています。

仮想環境とパッケージ

仮想環境は、プロジェクトごとに独立したパッケージのインストール先を用意する仕組みです。プロジェクトごとに違うバージョンのパッケージを使えるようになります。標準の venv モジュールで作ります。

パッケージは pip で、PyPI (Python Package Index) からインストールします。pip freeze でインストール済みのパッケージを一覧にして requirements.txt に保存しておくと、pip install -r で同じ環境を再現できます。

Shell
python3 -m venv .venv            # 仮想環境を作るsource .venv/bin/activate        # 有効にする (Windows は .venv\Scripts\activate)pip install requests             # パッケージをインストールするpip install requests==2.31.0     # バージョンを指定するpip install --upgrade requests   # 更新するpip freeze > requirements.txt    # インストール済みの一覧を保存するpip install -r requirements.txt  # 一覧からまとめてインストールするdeactivate                       # 仮想環境を抜ける

試験でよくある引っかけ

  • sys.argv[0]

    sys.argv[0] はスクリプト名です。1 つ目の引数は sys.argv[1] です。

  • random.seed の意味

    同じ種を設定すれば、同じ乱数の並びが再現されます。乱数を「より乱雑にする」設定ではありません。

  • math.floor と負の数

    math.floor(-2.1) は -3 です。負の無限大の方向へ切り捨てます。

  • json.dumps の戻り値

    json.dumps が返すのは JSON 形式の文字列 (str) です。ファイルへの書き込みは json.dump です。

  • re.search と re.findall

    search は最初の一致のマッチ・オブジェクト (なければ None)、findall は一致した文字列のリストを返します。

  • 仮想環境の作り方

    仮想環境は python3 -m venv 名前 で作ります。パッケージのインストールは pip install です。

問題で確認する

この分野の問題を、解説つきで読めます (登録不要)。

出典・参考

コード例は、実際に実行して結果を確認しています。