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.py와 main.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