Python | レベル別練習問題:モジュールと import

Python
スポンサーリンク

「quiz.py(学習ノート版)」 =「練習+解説コメント+空欄(TODO)+例出力」つき完全版です。


構成内容

  • 50問(基礎〜応用)
  • 各問題に:
    • 学習ポイント(# 💡)
    • 解説コメント
    • 空欄(# TODO)
    • 例出力
  • 実際に grader.py で採点可能な形式

modules_quiz_set/quiz.py(学習ノート版)

# ================================================
# 📘 Python モジュール入門 50問 練習ノート
# 対象: 初心者〜中級
# ファイル名: quiz.py
# ================================================
# 各問題は関数として定義されています。
# あなたは「# TODO」部分を完成させてください。
# grader.py を実行すると自動採点されます!
# ================================================

# --------------------------------------------
# 🧩 基礎編(Q1〜Q10) import と基本構文
# --------------------------------------------

# Q1: mathモジュールをインポートし、平方根を計算しよう
# 💡 math.sqrt() を使う
import math

def q1_sqrt_of_9():
    # TODO: math.sqrt()を使って9の平方根を返す
    return None
# 期待値: 3.0


# Q2: 別名import(as)を使ってsin(π/2)を求めよう
# 💡 mathモジュールを短縮名で呼ぶ例
import math as m

def q2_sin_pi_over_2():
    # TODO: m.sin(m.pi / 2) を使う
    return None
# 期待値: 1.0


# Q3: from-import構文を使ってceil関数を直接呼ぼう
# 💡 math.ceil() → ceil() に直接アクセス
from math import ceil

def q3_round_up():
    # TODO: 3.2を切り上げて整数を返す
    return None
# 期待値: 4


# Q4: importしたモジュールのdir()で中身を確認しよう
# 💡 dir()でモジュール内の関数一覧を取得できる
def q4_check_math_dir():
    # TODO: dir(math) の結果がリストで返るようにする
    return None
# 期待値: ['acos', 'acosh', ...](一部でもOK)


# Q5: randomモジュールを使って1〜6の乱数を返そう
import random

def q5_random_dice():
    # TODO: randint(1,6)を使う
    return None
# 期待値: 1〜6のいずれかの整数


# Q6: statisticsモジュールで平均を計算しよう
import statistics

def q6_average():
    data = [10, 20, 30]
    # TODO: statistics.mean(data)
    return None
# 期待値: 20


# Q7: datetimeモジュールで今日の日付を返す
import datetime

def q7_today():
    # TODO: datetime.date.today() を返す
    return None
# 期待値: 実行日(例: 2025-11-04)


# Q8: sysモジュールでPythonのバージョン情報を返す
import sys

def q8_sys_version():
    # TODO: sys.version の文字列を返す
    return None


# Q9: osモジュールでカレントディレクトリを取得
import os

def q9_current_dir():
    # TODO: os.getcwd() を返す
    return None


# Q10: timeモジュールで1秒待機後に"Done!"を返す
import time

def q10_sleep_and_done():
    # TODO: time.sleep(1) のあと "Done!"
    return None


# --------------------------------------------
# 🧩 応用編(Q11〜Q30) 自作モジュール・パッケージ
# --------------------------------------------

# Q11: 自作モジュール(例: mymath.py)をimportして関数を呼ぶ
# 💡 graderでは内部的に mymath.py が用意されています
def q11_use_mymath_add():
    # TODO: from mymath import add; add(2,3)
    return None


# Q12: __name__ 変数の使い方を確認
def q12_check_name():
    # TODO: __name__ を返す
    return None


# Q13: __name__ == "__main__" で直接実行時だけ動くコード
def q13_main_check():
    # TODO: if構文を記述して"running directly"を返す
    return None


# Q14: 複数モジュールを組み合わせて計算
def q14_multi_module_calc():
    # TODO: math.sqrt(16) + random.randint(1, 3)
    return None


# Q15: os.pathモジュールを使ってファイル名取得
def q15_basename():
    path = "/home/user/data.txt"
    # TODO: os.path.basename(path)
    return None
# 期待値: "data.txt"


# Q16: モジュールの再インポートを試す(importlib)
import importlib

def q16_reload_math():
    # TODO: importlib.reload(math)
    return None


# Q17: 外部ライブラリ(例:requests)のimport例(実行不要)
# 💡 pip install requests で利用可能
def q17_requests_import_example():
    # TODO: import文を文字列で返す
    return None
# 期待値: "import requests"


# Q18: from-import * 構文(推奨されない例)
def q18_star_import_warning():
    # TODO: "Avoid using * imports" を返す
    return None


# Q19: sys.pathにモジュール検索パスを追加
def q19_add_path():
    # TODO: sys.path.append("/my/module/path")
    return None


# Q20: os.environを使って環境変数を設定
def q20_set_env():
    # TODO: os.environ["APP_MODE"] = "TEST"
    return None


# Q21: パッケージの初期化ファイル __init__.py の役割
def q21_package_init_explain():
    # TODO: "__init__.py makes a folder a package" を返す
    return None


# Q22: pipコマンドでライブラリをインストールする文字列
def q22_pip_install_str():
    # TODO: "pip install requests" を返す
    return None


# Q23: help()でモジュールの説明を確認
def q23_help_math():
    # TODO: help(math)
    return None


# Q24: モジュール内関数をエイリアスで再利用
def q24_alias_function():
    # TODO: f = math.sqrt; return f(25)
    return None
# 期待値: 5.0


# Q25: import失敗時の例外処理
def q25_import_error_handling():
    try:
        # TODO: 存在しないモジュールをimportし、exceptで文字列返す
        pass
    except ImportError:
        return "Import failed"
    return None


# Q26: warningsモジュールで警告を出す
import warnings

def q26_show_warning():
    # TODO: warnings.warn("Be careful!")
    return None


# Q27: math.factorial(5)を使って階乗を返す
def q27_factorial_5():
    # TODO: math.factorial(5)
    return None


# Q28: decimalモジュールで正確な小数計算
from decimal import Decimal

def q28_decimal_calc():
    # TODO: Decimal('0.1') + Decimal('0.2')
    return None
# 期待値: Decimal('0.3')


# Q29: fractionsモジュールで分数を扱う
from fractions import Fraction

def q29_fraction_add():
    # TODO: Fraction(1, 2) + Fraction(1, 3)
    return None
# 期待値: Fraction(5, 6)


# Q30: csvモジュールでCSV書き込み(簡易)
import csv

def q30_csv_write_example():
    # TODO: "csv.writer()" を使う文字列を返す
    return None


# --------------------------------------------
# 🧩 発展編(Q31〜Q50) 実用・例外・構造理解
# --------------------------------------------

# Q31: importした関数を再利用する関数を作る
def q31_use_imported_func():
    # TODO: q27_factorial_5() を呼んで結果を返す
    return None


# Q32: sys.exit()を使う関数(例外として扱う)
def q32_sys_exit_example():
    # TODO: sys.exit(0)
    return None


# Q33: shutilモジュールでファイルコピー(例文字列で説明)
def q33_shutil_copy_explain():
    # TODO: "shutil.copy('src', 'dst')" を返す
    return None


# Q34: tempfileモジュールで一時ファイル作成の説明
def q34_tempfile_usage():
    # TODO: "tempfile.TemporaryFile()" を返す
    return None


# Q35: jsonモジュールでdict→文字列変換
import json

def q35_json_dumps():
    data = {"x": 1}
    # TODO: json.dumps(data)
    return None
# 期待値: '{"x": 1}'


# Q36: json.loads()で文字列→dict変換
def q36_json_loads():
    s = '{"x": 1}'
    # TODO: json.loads(s)
    return None
# 期待値: {"x": 1}


# Q37: importlib.import_module() で動的インポート
def q37_dynamic_import_math():
    # TODO: importlib.import_module("math")
    return None


# Q38: pprintモジュールで整形出力(説明文字列)
def q38_pprint_explain():
    # TODO: "pprint.pprint() formats nested structures" を返す
    return None


# Q39: contextlibモジュールの使い方説明
def q39_contextlib_explain():
    # TODO: "contextlib helps manage context managers" を返す
    return None


# Q40: os.listdir()で現在のフォルダのファイル一覧
def q40_list_files():
    # TODO: os.listdir(".")
    return None


# Q41: pathlibモジュールでパス操作
from pathlib import Path

def q41_path_example():
    # TODO: Path("data") / "file.txt"
    return None


# Q42: sys.modulesの仕組みを説明
def q42_sys_modules_explain():
    # TODO: "sys.modules stores imported modules" を返す
    return None


# Q43: import時間を測る(time.perf_counter)
def q43_import_time_explain():
    # TODO: "time.perf_counter() measures import time" を返す
    return None


# Q44: inspectモジュールで関数情報取得
import inspect

def q44_inspect_func():
    # TODO: inspect.getsource(math.sqrt)
    return None


# Q45: siteモジュールの役割を説明
def q45_site_explain():
    # TODO: "site manages Python environment paths" を返す
    return None


# Q46: typesモジュールで関数型を確認
import types

def q46_is_function():
    # TODO: isinstance(q1_sqrt_of_9, types.FunctionType)
    return None


# Q47: enumモジュールで列挙型を作成
from enum import Enum

def q47_enum_example():
    # TODO: Enum("Color", "RED GREEN BLUE")
    return None


# Q48: sys.getsizeof()でオブジェクトのサイズを確認
def q48_getsizeof_int():
    # TODO: sys.getsizeof(123)
    return None


# Q49: subprocessモジュールで外部コマンド実行(説明)
def q49_subprocess_explain():
    # TODO: "subprocess.run(['ls']) runs shell command" を返す
    return None


# Q50: import hook の仕組みを説明
def q50_import_hook_explain():
    # TODO: "Import hooks customize how modules are loaded" を返す
    return None
Python

この quiz.py は学習ノート形式で、

  • 1問ごとに 解説コメント+学習ヒント+TODO
  • 採点時は grader.py が自動で比較
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました