Python | モジュール学習の完全版(初学者から実務レベルまで)

Python
スポンサーリンク

では次に、「モジュールと import」テーマの全50問セット(基礎〜応用)」を、
📗Jupyter Notebook形式(セル区切り+出力+自動採点対応)で構成します。


全体構成(モジュール・import入門〜応用 50問)

レベル内容問題数
基礎編importの基本・math/randomの利用1〜20
中級編from import・別名・標準モジュール応用(datetime, osなど)21〜35
応用編自作モジュール・外部ライブラリ風練習・例外・型ヒント付き36〜50

下記は「Notebook完全版」の一部(セル構成例+採点システム付き)です。
この形式で .ipynb ファイルとして出力することも可能です。


Pythonモジュールとimport学習ノート(50問)


セル1:イントロ

# Pythonモジュールと import 総合練習ノート(全50問)
# =====================================================
# 各セルには、問題文+自動採点コードがあります。
# 難易度は「基礎 → 中級 → 応用」と上がっていきます。

print("✨ ようこそ!モジュールマスター養成ノートへ ✨")
Python

【基礎編】Q1〜Q20(import・math・random)

セル2(Q1〜Q5)

# Q1. mathモジュールをインポートし、9の平方根をresult1に代入
# Q2. math.pi を変数pi_valに代入
# Q3. randomモジュールをインポートし、1〜3の乱数をrand_numに代入
# Q4. math.floor(3.7) の結果を変数fに代入
# Q5. math.ceil(3.2) の結果を変数cに代入

# --- 採点 ---
import math, random

def check_1_5():
    score = 0
    if 'result1' in globals() and math.isclose(result1, 3.0): score += 1
    if 'pi_val' in globals() and math.isclose(pi_val, math.pi): score += 1
    if 'rand_num' in globals() and 1 <= rand_num <= 3: score += 1
    if 'f' in globals() and f == 3: score += 1
    if 'c' in globals() and c == 4: score += 1
    print(f"Q1〜Q5 スコア:{score}/5")

check_1_5()
Python

セル3(Q6〜Q10)

# Q6. from math import sqrt を使って √16 を s に代入
# Q7. from random import randint を使い、1〜5の乱数をr2に代入
# Q8. import math as m として、m.pow(2,5) を p に代入
# Q9. math.log10(1000) の結果を l に代入
# Q10. random.choice() を使い [1,2,3,4] から1つ選び choice_num に代入

# --- 採点 ---
def check_6_10():
    score = 0
    try:
        if math.isclose(s, 4.0): score += 1
        if 1 <= r2 <= 5: score += 1
        if p == 32.0: score += 1
        if math.isclose(l, 3.0): score += 1
        if choice_num in [1,2,3,4]: score += 1
    except:
        pass
    print(f"Q6〜Q10 スコア:{score}/5")

check_6_10()
Python

セル4(Q11〜Q15)

# Q11. random.uniform(1,10)の結果をfloat_numに代入
# Q12. math.isclose(3.14, math.pi, rel_tol=0.01) の結果を近似比較して bool_val に代入
# Q13. math.e の値を e_val に代入
# Q14. math.trunc(7.9) の結果を t に代入
# Q15. math.remainder(10,3) の結果を rem に代入

def check_11_15():
    score = 0
    if 'float_num' in globals() and 1 <= float_num <= 10: score += 1
    if 'bool_val' in globals() and isinstance(bool_val, bool): score += 1
    if 'e_val' in globals() and math.isclose(e_val, math.e): score += 1
    if 't' in globals() and t == 7: score += 1
    if 'rem' in globals() and math.isclose(rem, 1.0): score += 1
    print(f"Q11〜Q15 スコア:{score}/5")

check_11_15()
Python

【中級編】Q21〜Q35(datetime・os・sys)

セル5(Q21〜Q25)

import datetime, os, sys

# Q21. 現在の日付を today に代入(datetime.date.today() 使用)
# Q22. 現在の作業ディレクトリを cwd に代入(os.getcwd())
# Q23. sys.version を ver に代入
# Q24. datetime.datetime.now().year を year に代入
# Q25. os.path.basename("/usr/bin/python") の結果を base に代入

def check_21_25():
    score = 0
    if 'today' in globals() and isinstance(today, datetime.date): score += 1
    if 'cwd' in globals() and isinstance(cwd, str): score += 1
    if 'ver' in globals() and "Python" in ver or "3" in ver: score += 1
    if 'year' in globals() and isinstance(year, int): score += 1
    if 'base' in globals() and base == "python": score += 1
    print(f"Q21〜Q25 スコア:{score}/5")

check_21_25()
Python

セル6(Q26〜Q30)

# Q26. os.name の値を osname に代入
# Q27. sys.platform の値を platform に代入
# Q28. datetime.timedelta(days=7) を delta に代入
# Q29. today + delta を next_week に代入
# Q30. datetime.datetime.strptime("2025-11-04", "%Y-%m-%d") を parsed に代入

def check_26_30():
    score = 0
    if 'osname' in globals(): score += 1
    if 'platform' in globals(): score += 1
    if 'delta' in globals() and isinstance(delta, datetime.timedelta): score += 1
    if 'next_week' in globals() and isinstance(next_week, datetime.date): score += 1
    if 'parsed' in globals() and parsed.year == 2025: score += 1
    print(f"Q26〜Q30 スコア:{score}/5")

check_26_30()
Python

【応用編】Q36〜Q50(自作モジュール・例外・型ヒント)

セル7(Q36〜Q40)

# Q36. mymodule.py を作り、関数 greet(name:str)->str を定義("Hi, name!"を返す)
# Q37. import mymodule 後、mymodule.greet("Halu") の結果を msg に代入
# Q38. try-except構文で math.sqrt(-1) を処理し、エラー時は "error" を res に代入
# Q39. from math import factorial を使って 5! を f5 に代入
# Q40. import statistics as st として、平均(mean)を mean_val に代入(データ=[1,2,3])

def check_36_40():
    score = 0
    if 'msg' in globals() and "Hi" in msg: score += 1
    if 'res' in globals() and res == "error": score += 1
    if 'f5' in globals() and f5 == 120: score += 1
    if 'mean_val' in globals() and math.isclose(mean_val, 2.0): score += 1
    print(f"Q36〜Q40 スコア:{score}/4")

check_36_40()
Python

セル8(Q41〜Q50)

# Q41. import calendar として、calendar.month(2025,1) を cal に代入
# Q42. import json として、json.dumps({"a":1}) を j に代入
# Q43. from collections import Counter として Counter("hello") を cnt に代入
# Q44. import math; math.gcd(18,24) を g に代入
# Q45. import random; random.shuffle()を使って[1,2,3]をシャッフル → sh に代入
# Q46. import os; os.path.exists(".") の結果を ex に代入
# Q47. import time; time.sleep(1) → okに "done" を代入
# Q48. from decimal import Decimal として Decimal("0.1")+Decimal("0.2") → dsum
# Q49. import re; re.findall(r"\d+", "a1b2c3") → nums
# Q50. import pathlib; pathlib.Path(".").resolve() → pth

def check_41_50():
    score = 0
    if 'cal' in globals() and "January" in cal: score += 1
    if 'j' in globals() and '"a"' in j: score += 1
    if 'cnt' in globals() and 'h' in cnt: score += 1
    if 'g' in globals() and g == 6: score += 1
    if 'sh' in globals() and set(sh)=={1,2,3}: score += 1
    if 'ex' in globals() and isinstance(ex,bool): score += 1
    if 'ok' in globals() and ok=="done": score += 1
    if 'dsum' in globals() and math.isclose(float(dsum),0.3): score += 1
    if 'nums' in globals() and nums==["1","2","3"]: score += 1
    if 'pth' in globals() and "Path" in str(type(pth)): score += 1
    print(f"Q41〜Q50 スコア:{score}/10")

check_41_50()
Python

最終セル:総合評価

print("🎯 モジュール総合演習 終了!")
print("🌟 お疲れさまでした!importマスターです。")
Python
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました