Kodrill

モジュールと入出力

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

import の書き方/__name__/文字列の書式化 (f-string・format)/ファイル入出力

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

ログインなしで試す

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

5 問を試す

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

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

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

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

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

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

モジュールと入出力の要点

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

この分野は「Pythonチュートリアル」の第 6 章 (モジュール) と第 7 章 (入力と出力) に対応します。前半はモジュールの読み込み方と、スクリプトとして実行されたかを判定する __name__、後半は文字列の書式化とファイルの読み書きが問われます。

出題項目は「モジュール」「入出力と書式化」の 2 つです。書式指定 (:>6・:05d・:.2f など) の結果を答える問題がよく出るので、実際の出力を確かめながら覚えましょう。

モジュールの読み込み

モジュールは、関数やクラスなどを定義した .py ファイルです。import の書き方によって、使うときの名前が変わります。

・import math: math.sqrt(16) のようにモジュール名を付けて使う ・from math import sqrt, pi: sqrt(16) のように名前だけで使える ・import statistics as st・from math import pi as PI: 別名を付ける ・from math import *: _ で始まる名前以外をまとめて取り込む (どの名前が入ったか分かりにくいので、実務では避ける)

モジュールを直接スクリプトとして実行したときは、そのモジュールの __name__ が "__main__" になります。import されたときは、__name__ はモジュール名です。そのため、if __name__ == "__main__": の中に書いた処理は、直接実行したときだけ動きます。

Python
import mathfrom math import sqrt, pi as PIimport statistics as st​print(math.floor(2.7), sqrt(16), round(PI, 3))print(st.mean([1, 2, 3]))print(__name__)​if __name__ == "__main__":    print("直接実行された")
ターミナル
python3 main.py
2 4.0 3.142
2
__main__
直接実行された

import したモジュールは、sys.path に並んだディレクトリ (実行したスクリプトのディレクトリ、環境変数 PYTHONPATH、インストール先など) の順に探されます。モジュールは 1 回の実行につき 1 回だけ読み込まれます。dir(モジュール) でモジュールが定義している名前の一覧を調べられます。

複数のモジュールをディレクトリにまとめたものをパッケージと呼び、import sound.effects.echo のようにドットでつないで読み込みます。パッケージのディレクトリに置く __init__.py には、パッケージを読み込んだときの初期化処理や、from パッケージ import * で読み込む名前の一覧 __all__ を書けます。

文字列の書式化

f-string (f"...") の { } の中には、: の後ろに書式指定を書けます。

・{name:>6}: 幅 6 で右寄せ (< は左寄せ、^ は中央) ・{score:05d}: 幅 5 の整数で、足りない桁を 0 で埋める ・{ratio:.2f}: 小数点以下 2 桁の固定小数点 ・{ratio:.1%}: 100 倍してパーセント表記 (小数点以下 1 桁) ・{n:,}: 3 桁ごとにカンマを入れる

str.format() では、{0}・{1} で引数の位置を、{name} でキーワード引数を指定します。同じ番号を何度使っても構いません。古い書き方の % 演算子 ("%d 点" % 87) も使えます。

str() は人が読みやすい文字列を、repr() はそのオブジェクトを表す文字列 (文字列なら ' で囲んだ形) を返します。文字列のメソッドの rjust(幅)・ljust(幅)・center(幅) は空白で埋めて寄せ、zfill(幅) は左を 0 で埋めます。

Python
name, score, ratio = "Sato", 87, 0.8768print(f"[{name:>6}|{score:05d}|{ratio:.1%}|{ratio:.2f}|{1234567:,}]")print("{1}-{0}-{1}".format("A", "B"), "{n} 点".format(n=score))print(str("abc"), repr("abc"), repr(1.5))print("5".rjust(3), "5".zfill(3), "ab".ljust(4) + "|", "%d 点 (%s)" % (score, name))
ターミナル
python3 main.py
[  Sato|00087|87.7%|0.88|1,234,567]
B-A-B 87 点
abc 'abc' 1.5
  5 005 ab  | 87 点 (Sato)

ファイルの読み書き

ファイルは open(ファイル名, モード, encoding=...) で開きます。主なモードは "r" (読み込み。省略時)・"w" (書き込み。既存の内容は消える)・"a" (末尾に追記)・"b" (バイナリ。"rb" のように組み合わせる) です。

with open(...) as f: の形で開くと、ブロックを抜けたときに (例外が起きても) 自動でファイルが閉じられます。write() は書き込んだ文字数を返します。print(..., file=f) でも書き込めます (末尾に改行が付きます)。

読み込みは、read() で全体を 1 つの文字列に、readline() で 1 行ずつ、for line in f: でも 1 行ずつ取り出せます。1 行には末尾の改行 \n が含まれるので、rstrip() などで取り除いてから使います。

Python
with open("memo.txt", "w", encoding="utf-8") as f:    n = f.write("one\n")    print("two", file=f)print(n, f.closed)​with open("memo.txt", encoding="utf-8") as f:    for line in f:        print(line.rstrip())​with open("memo.txt", "a", encoding="utf-8") as f:    f.write("three\n")​with open("memo.txt", encoding="utf-8") as f:    print(f.read().splitlines())
ターミナル
python3 main.py
4 True
one
two
['one', 'two', 'three']

json によるデータの保存

リストや辞書のような構造を持つデータは、json モジュールで JSON 形式の文字列に変換して保存すると便利です。json.dumps() は Python のオブジェクトを JSON の文字列に、json.loads() は JSON の文字列を Python のオブジェクトに変換します。ファイルに直接読み書きするときは json.dump(obj, f)・json.load(f) を使います。

Python
import json​text = json.dumps({"name": "Sato", "tags": ["a", "b"], "ok": True})print(text)data = json.loads(text)print(type(data), data["tags"][1])
ターミナル
python3 main.py
{"name": "Sato", "tags": ["a", "b"], "ok": true}
<class 'dict'> b

JSON では、Python の True は true、None は null になり、文字列は必ず " で囲まれます。

試験でよくある引っかけ

  • import math の後の呼び出し

    import math では math.sqrt(16) と書きます。sqrt(16) だけでは NameError です。

  • __name__ の値

    直接実行したスクリプトの __name__ は "__main__"、import されたモジュールではモジュール名です。

  • 書式指定の %

    f"{0.8768:.1%}" は 87.7% です。100 倍してから丸めます。

  • str() と repr()

    文字列 abc を repr() すると 'abc' のように引用符が付きます。

  • "w" モードの上書き

    "w" で開くと既存の内容は消えます。追記するには "a" を使います。

  • with とファイルのクローズ

    with のブロックを抜けると、ファイルは自動で閉じられます (f.closed が True)。

問題で確認する

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

出典・参考

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