7단원 과제 정답: 모듈 & 패키지¶
문제 1. import 방식 차이¶
① 4
② 4.0
③ 3.141592653589793
④ 4
⑤ 24
해설
| 항목 | 식 | 결과 |
|---|---|---|
| ① | math.floor(4.9) |
4 — 내림 |
| ② | sqrt(16) |
4.0 — float 반환 |
| ③ | m.pi |
3.141592... — 전체 값 |
| ④ | ceil(3.1) |
4 — 올림 |
| ⑤ | math.factorial(4) |
24 — 4! = 4×3×2×1 |
문제 2. random 모듈¶
random.seed(42)로 고정된 결과:
① 1
② 10 (또는 seed에 따라 다름)
③ cherry (또는 seed에 따라 다름)
④ <class 'float'>
⑤ True
정확한 ①~③ 값은 파이썬 버전에 따라 다를 수 있지만 seed(42)로 실행마다 동일합니다.
⑤가 항상 True인 이유: random.random()은 항상 0.0 ≤ x < 1.0 범위의 float을 반환하도록 정의되어 있기 때문입니다.
문제 3. datetime 모듈¶
① 2026
② 5
③ 2026-05-23
④ 14:30
⑤ <class 'datetime.datetime'>
해설
strftime 포맷: %Y=4자리 연도, %m=2자리 월, %d=2자리 일, %H=시(24h), %M=분
문제 4. __name__ == "__main__"¶
main.py 실행 시:
① greet 모듈 로드됨
② Hello, Python!
greet.py 직접 실행 시:
③ greet 모듈 로드됨
④ Hello, World!
⑤ 직접 실행
해설
import greet 시: 모듈 전체가 실행되지만 __name__이 "greet"이므로 if __name__ == "__main__": 블록은 건너뜁니다.
python greet.py 실행 시: __name__이 "__main__"이므로 if 블록도 실행됩니다.
문제 5. os 모듈¶
① data/files/report.txt
② images/photo.jpg
③ True
④ report.txt
⑤ data/files
해설
os.path.join은 OS에 맞는 경로 구분자를 자동 사용합니다 (Linux: /, Windows: \).
basename: 마지막 파일/폴더 이름
dirname: 부모 디렉토리 경로
문제 6. json 모듈¶
① <class 'str'>
② <class 'dict'>
③ Alice
④ 85
⑤ True
해설
json.dumps() → Python 객체를 JSON 문자열로 변환
json.loads() → JSON 문자열을 Python 객체로 변환
"active": True → JSON에서도 true로 저장되고, 파싱 시 Python True로 복원됩니다.
문제 7. math 모듈 활용¶
① 2.1: floor=2, ceil=3
② 2.5: floor=2, ceil=3
③ 2.9: floor=2, ceil=3
④ -1.4: floor=-2, ceil=-1
⑤ True
⑥ 3.142
해설
음수 floor(-1.4) = -2 (더 작은 정수), ceil(-1.4) = -1 (더 큰 정수) — 양수와 반대 방향임에 주의.
문제 8. 로또 번호 생성기¶
import random
def lotto():
numbers = random.sample(range(1, 46), 6)
return sorted(numbers)
print("로또:", lotto())
빈칸 정답
| 빈칸 | 정답 | 이유 |
|---|---|---|
______ random |
import |
모듈 가져오기 |
random.______ |
sample |
중복 없이 n개 선택 |
return ______ |
sorted |
오름차순 정렬 |
문제 9. 모듈 만들기¶
# converter.py
def km_to_mile(km):
return km * 0.6214
def celsius_to_fahrenheit(c):
return c * 9 / 5 + 32
def bmi(height_m, weight_kg):
return weight_kg / height_m ** 2
빈칸 정답
| 빈칸 | 정답 |
|---|---|
______ * 0.6214 |
km |
c * 9 / 5 ______ 32 |
+ |
______ / height_m ______ 2 |
weight_kg, ** |
______ converter |
import |
문제 10. JSON 저장 & 로드¶
import json
students = [
{"name": "Alice", "score": 90},
{"name": "Bob", "score": 75},
]
with open("students.json", "w", encoding="utf-8") as f:
json.dump(students, f, ensure_ascii=False, indent=2)
with open("students.json", "r", encoding="utf-8") as f:
loaded = json.load(f)
for s in loaded:
print(f"{s['name']}: {s['score']}")
빈칸 정답
| 빈칸 | 정답 | 이유 |
|---|---|---|
| 저장 모드 | "w" |
쓰기 모드 |
json.______ (저장) |
dump |
파일에 JSON 저장 |
| 로드 모드 | "r" |
읽기 모드 |
json.______ (로드) |
load |
파일에서 JSON 읽기 |
s['______'] |
name, score |
딕셔너리 키 |