では次に、「モジュールと 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