🔁
실습 프로젝트 (Practice) · ★
다중 카테고리 + 양방향
Lv1 · 단위 변환기
길이/무게/온도를 양방향으로 변환하는 메뉴 CLI. 변환 함수를 카테고리별로 분리하고 메뉴 핸들러로 매핑합니다.
함수메뉴
소요 시간
⏱ 1~2시간
난이도
📊 기초 응용
선수 조건
🎯 기초 3, 9주차
결과물
도메인별 함수 분리 패턴
이 강의에서 배우는 것
- 1변환 함수를 단위 쌍별로 정의한다
- 2메뉴 → 핸들러 매핑을 dict 로 한다
- 3f-string 으로 깔끔한 결과 출력
프로젝트 개요
- 메뉴: 1.길이(cm↔inch) 2.무게(kg↔lb) 3.온도(°C↔°F) 4.종료
- 각 카테고리 안에서 다시 양방향 선택
- 변환 함수는 카테고리별로 별도 정의
요구사항
- cm_to_inch, inch_to_cm 등 6개 함수
- menu_length / menu_weight / menu_temp 핸들러
- handlers dict 로 메뉴 라우팅
도전 과제
- 환율 변환 추가 (외부 API)
- 자유 입력 형태 (5 km to mile)
채점 체크리스트
- 변환 함수 분리
- 메뉴 라우팅
- 양방향 모두 동작
💻 예제 (examples)
실제로 실행해 결과를 확인할 수 있는 예제 코드입니다.
solution.py— 전체 동작 코드
CODE
"""단위 변환기 — 다중 카테고리 + 양방향"""
def cm_to_inch(cm): return cm / 2.54
def inch_to_cm(inch): return inch * 2.54
def kg_to_lb(kg): return kg * 2.2046226218
def lb_to_kg(lb): return lb / 2.2046226218
def c_to_f(c): return c * 9 / 5 + 32
def f_to_c(f): return (f - 32) * 5 / 9
def menu_length():
direction = input("1.cm→inch 2.inch→cm: ").strip()
val = float(input("값: "))
if direction == "1":
print(f"{val} cm = {cm_to_inch(val):.2f} inch")
else:
print(f"{val} inch = {inch_to_cm(val):.2f} cm")
def menu_weight():
direction = input("1.kg→lb 2.lb→kg: ").strip()
val = float(input("값: "))
if direction == "1":
print(f"{val} kg = {kg_to_lb(val):.2f} lb")
else:
print(f"{val} lb = {lb_to_kg(val):.2f} kg")
def menu_temp():
direction = input("1.°C→°F 2.°F→°C: ").strip()
val = float(input("값: "))
if direction == "1":
print(f"{val}°C = {c_to_f(val):.2f}°F")
else:
print(f"{val}°F = {f_to_c(val):.2f}°C")
def main():
handlers = {"1": menu_length, "2": menu_weight, "3": menu_temp}
while True:
choice = input("\n[메뉴] 1.길이 2.무게 3.온도 4.종료: ").strip()
if choice == "4":
break
if choice in handlers:
handlers[choice]()
if __name__ == "__main__":
main()▶ 실행 결과
[메뉴] 1.길이 2.무게 3.온도 4.종료: 1
1.cm→inch 2.inch→cm: 1
값: 100
100.0 cm = 39.37 inch📝 과제 (exercises)
직접 풀어보고, 막힐 때 정답을 펼쳐 비교해보세요.
과제 1
프로젝트 구현
목표: 위 사양대로 직접 작성한다.
요구사항
- 6개 변환 함수
- 3개 메뉴 핸들러
- handlers dict 라우팅
💡 힌트
f-string 의 :.2f
입출력 예시
100.0 cm = 39.37 inch채점
- · 함수 분리
- · 메뉴 동작
▶정답 코드 펼치기 / 접기
SOLUTION
# 위 solution.py 와 동일▶ 실행 결과
(예제 참고)