← 파이썬 강의 목록으로
🔁
실습 프로젝트 (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 와 동일
▶ 실행 결과
(예제 참고)
예제 코드 / 강의 자료

전체 강의 자료와 예제 코드는 GitHub에서 자유롭게 받아볼 수 있습니다.

GitHub에서 보기 ↗