콘텐츠로 이동

7단원 과제 (모듈 & 패키지)

이름: ____________

  • 출력 예측: 소스 코드를 보고 실행 결과를 예측하세요.
  • 빈칸 채우기: ______ 빈칸을 채워 프로그램을 완성하세요.

문제 1. import 방식 차이 (출력 예측)

소스 코드

import math
from math import sqrt, ceil
import math as m

print(math.floor(4.9))
print(sqrt(16))
print(m.pi)
print(ceil(3.1))
print(math.factorial(4))

실행 결과

①

②

③

④

⑤

문제 2. random 모듈 (출력 예측)

아래 코드에서 고정된 출력(항상 같은 값)실행마다 다른 출력을 구분하세요.

소스 코드

import random

random.seed(42)          # 난수 고정 (재현 가능)
print(random.randint(1, 10))
print(random.randint(1, 10))
print(random.choice(["apple", "banana", "cherry"]))
print(type(random.random()))
print(0 <= random.random() < 1)

실행 결과 (seed=42로 고정된 경우)

①

②

③

④

⑤

Q: print(0 <= random.random() < 1)의 결과가 항상 같은 이유는?

Answer: ______

문제 3. datetime 모듈 (출력 예측)

datetime.now()2026-05-23 14:30:45를 반환한다고 가정합니다.

소스 코드

from datetime import datetime

now = datetime(2026, 5, 23, 14, 30, 45)
print(now.year)
print(now.month)
print(now.strftime("%Y-%m-%d"))
print(now.strftime("%H:%M"))
print(type(now))

실행 결과

①

②

③

④

⑤

문제 4. __name__ == "__main__" (출력 예측)

greet.pymain.py 파일이 아래와 같습니다.

greet.py

def say_hello(name):
    return f"Hello, {name}!"

print("greet 모듈 로드됨")

if __name__ == "__main__":
    print(say_hello("World"))
    print("직접 실행")

main.py

import greet

print(greet.say_hello("Python"))

main.py를 실행했을 때 출력:

①

②

greet.py를 직접 실행했을 때 출력:

③

④

⑤

문제 5. os 모듈 (출력 예측)

소스 코드

import os

path1 = os.path.join("data", "files", "report.txt")
path2 = os.path.join("images", "photo.jpg")
print(path1)
print(path2)
print(os.path.exists("/home/leo"))
print(os.path.basename(path1))
print(os.path.dirname(path1))

실행 결과 (Linux 기준)

①

②

③

④

⑤

문제 6. json 모듈 (출력 예측)

소스 코드

import json

data = {"name": "Alice", "scores": [90, 85, 78], "active": True}
json_str = json.dumps(data)
parsed = json.loads(json_str)

print(type(json_str))
print(type(parsed))
print(parsed["name"])
print(parsed["scores"][1])
print(parsed["active"])

실행 결과

①

②

③

④

⑤

문제 7. math 모듈 활용 (출력 예측)

소스 코드

import math

values = [2.1, 2.5, 2.9, -1.4]
for v in values:
    print(f"{v}: floor={math.floor(v)}, ceil={math.ceil(v)}")

print(math.sqrt(2) > 1)
print(round(math.pi, 3))

실행 결과

①

②

③

④

⑤

⑥

문제 8. 로또 번호 생성기 (빈칸 채우기)

실행 예시

로또: [3, 7, 15, 22, 38, 43]

소스 코드

______ random

def lotto():
    numbers = random.______(range(1, 46), 6)
    return ______(numbers)

print("로또:", lotto())

문제 9. 모듈 만들기 (빈칸 채우기)

단위 변환 모듈 converter.py를 완성하세요.

converter.py

def km_to_mile(km):
    return ______ * 0.6214

def celsius_to_fahrenheit(c):
    return c * 9 / 5 ______ 32

def bmi(height_m, weight_kg):
    return ______ / height_m ______ 2

main.py

______ converter

print(round(converter.km_to_mile(10), 2))         # 6.21
print(converter.celsius_to_fahrenheit(100))        # 212.0
print(round(converter.bmi(1.7, 65), 1))            # 22.5

문제 10. JSON 저장 & 로드 (빈칸 채우기)

학생 성적을 JSON 파일에 저장하고 불러오는 코드를 완성하세요.

소스 코드

import json

students = [
    {"name": "Alice", "score": 90},
    {"name": "Bob",   "score": 75},
]

# 저장
with open("students.json", "______", encoding="utf-8") as f:
    json.______(students, f, ensure_ascii=False, indent=2)

# 불러오기
with open("students.json", "______", encoding="utf-8") as f:
    loaded = json.______(f)

for s in loaded:
    print(f"{s['______']}: {s['______']}")

실행 결과

Alice: 90
Bob: 75