IT/Python

파이썬_카페 주문 프로그램을 만들어보자!

IamSusan 2023. 3. 17. 14:03

카페 주문 프로그램

 

[모듈]

1. time: 운영 체제가 제공하는 다양한 시간 기능을 다루는 모듈

 

[함수]

1. time.sleep: 입력한 초만큼 프로그램 일시정지

2. items: 딕셔너리에 있는 키와 값들의 쌍을 얻을 수 있음.

 

Q. 카페에서 주문을 받고, 음료를 제공한 후 log를 남겨라.

카페 메뉴

1. 아메리카노(음료 만드는 시간: 1초)

2. 라떼(음료 만드는 시간: 2초)

3. 바닐라라떼(음료 만드는 시간: 3초)

4. 녹차라떼(음료 만드는 시간: 3초)

5. 콜드브루(음료 만드는 시간: 1초)

주문내역 log

코드를 작성할 때 함수를 사용하는 것이 쉽지 않았다.

하드코딩은 유지보수를 어렵게 만들기 때문에 그 점을 어떻게 개선해나가야 할지 고민을 많이 했다.

 

 (1) 카페 프로그램 사용 시 추후 자주 변경 될 부분이 무엇일까를 고민했다. 가장 빈번하게 변경되는 부분은 메뉴라고 생각했다.(가격은 이 카페 프로그램에 담지 않았기 때문에 제외) 메뉴를 변경해도 프로그램이 돌아가는데 이상이 없도록 유지보수를 최대한 용이하게 할 수 있는 방법을 고민했다.

  -> 메뉴를 dict 형태로 구성하여 추후 메뉴명이 변경되어도 dict 내에 메뉴명만 변경하면 되도록 구성하였다.

 

 (2) printMenu 함수는 메뉴판을 출력한다. 처음에는 메뉴 번호와 메뉴명을 하드코딩하였다. 하지만 이는 굉장히 나쁜 코딩이라는 것을 느꼈다. 추후 메뉴 변경이 생기면 함수도 수정해야 하기 때문에 함수를 사용하는 이유가 사라지는 것이다.

  -> 반복문과 items() 함수를 활용하여 dict 내에 있는 키와 값들을 출력할 수 있도록 구성하였다. 이는 메뉴명이 변경될 때 dict만 변경해주면 되는 부분이라 보다 효율적인 코드가 되었다.

 

 (3) 번호로 주문을 하면 '{메뉴명} 나왔습니다.'라고 출력하는 부분이있다. 처음에는 makeCoffee 함수 안에 printMenu 함와 마찬가지로 번호별로 프린트문에 메뉴명을 하드코딩했다.

  -> 이번에도 dict의 키 값을 활용하여 result라는 변수에 넣었고 이를 활용하여 출력하였다. 이 또한 메뉴명이 변경될 때 dict만 변경해주면 되는 부분이기 때문에 효율적이라 볼 수 있다. 하지만 걱정되는 부분은 메뉴마다 다른 제조시간이다. 이 부분은 함수를 건들여 수정하지 않도록 고민을 해봐야겠다.

 

 (4) while문은 최대한 간결하게 정리된 핵심만 볼 수 있도록 의도했다.

  -> 작성한 함수들을 while문 안에 넣어 깔끔하게 코딩하려고 노력하였다.