[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
미니프로젝트8 | ✅저자: 이유정(박사)
프로젝트 코드명: OrderProcessor
프로젝트 유형: 상품 주문 처리 및 가격 계산 시스템
🖥️ 프로젝트 개요
사용자가 여러 개의 상품을 주문할 수 있도록 하고,
각 상품의 수량과 단가를 기반으로 총 주문 금액을 계산하는 콘솔 기반 주문 처리기를 구현합니다.
상품 수, 항목 종류는 유동적이므로 가변 인자를 사용하고, 옵션은 키워드 인자로 처리합니다.
◽ 이 프로젝트를 통해 자연스럽게 적용되는 내용
- 함수 정의 및 호출
- 매개변수, 인자(위치/키워드)
- 반환값과 리턴문
- 가변 인자(*args)로 복수 상품 처리
- 가변 키워드 인자(**kwargs)로 옵션 처리
📄 기능 요구사항 (Functional Requirements)
- FR-01
process_order(*items, **options)
함수items
: 각 상품은 (상품명, 수량, 단가) 튜플options
: 세금, 할인율 등 옵션
- FR-02 총 상품 금액 출력
- FR-03 세금 및 할인 계산 포함
📄 비기능 요구사항 (Non-Functional Requirements)
- 구조적 출력
- 옵션이 없어도 기본값 적용 (예: 세금 10%)
- 잘못된 입력에 대한 유연한 처리
✅ 출력 포맷 구성:
주문 내역
- 노트북 x 1개: 1500000원
- 마우스 x 2개: 40000원
총합: 1540000원
세금 포함 총액: 1694000원
할인 적용 후 최종 결제금액: 1524600원
✅ 정답 코드:
def process_order(*items, **options):
tax = options.get("tax", 0.1)
discount = options.get("discount", 0.1)
print("주문 내역")
total = 0
for name, count, price in items:
subtotal = count * price
print(f"- {name} x {count}개: {subtotal}원")
total += subtotal
tax_amount = int(total * (1 + tax))
final_price = int(tax_amount * (1 - discount))
print(f"총합: {total}원")
print(f"세금 포함 총액: {tax_amount}원")
print(f"할인 적용 후 최종 결제금액: {final_price}원")
# 사용 예시
process_order(
("노트북", 1, 1500000),
("마우스", 2, 20000),
tax=0.1,
discount=0.1
)
🔍 코드 해설:
*items
를 통해 상품 개수가 몇 개든 자유롭게 처리**options
는 세금, 할인 등 다양한 계산 옵션 처리get()
을 활용한 기본값 적용- 실무에서 자주 활용하는 패턴 (장바구니, 결제 시스템 등)