이번 썰에서는 파이썬의 맛을 조금 보았겠다.....
예제관련하여 소스 코드를 올려볼까 한다.
이 예제를 가지고 다음 썰 등에서 조금 더 업그레이드를 할 수도 있을꺼라고 생각한다.....
Maybe....
(알고리즘의 구현이나.... UML도요~)
이번 썰에서 올려 볼 파이썬 예제는 이러하다....
바로바로 !!!
커피 자판기이다.
1. 커피자판기는 커피가 있어야 판매를 할 수 있다. (여기서는 기본값을 10을 주었다)
2. 각 커피별로 금액을 다르게 한다.
3. 커피가 다 떨어지면 커피 판매는 종료된다.
4. 커피 판매액은 누적되어야한다.
※ 2번의 각 커피라고 되어있는데 추후에 메뉴를 추가 할 수 있어야 한다.
(이 3번 같은 경우 커피 메뉴를 자바에서처럼 class 자료형을 빼서 메인으로 주입을 해 주고 (DI)
인터페이스를 이용했다면 본문의 수정 없이도 메뉴 추가가 가능했을 텐데..
아직 파이썬에서 그 정도까지 진도가 안 나가서... 메인은 수정을 하되
메뉴 숫자에 따라서 유기적으로 돌아가도록 하느라고 리스트, 배열, 해쉬구조의 짬뽕이 되었다.
덕분에 우리는 메뉴를 추가할때 메뉴번호 : {메뉴이름:가격} 의 2중 해쉬 구조로 추가만 해 주면
소스의 수정 없이 돌아가도록 소스를 구현했다.
반복문을 이용한 커피 자판기
"""
"""
커피를 한번 주문 시 마다 -1이 된다.
커피 판매 금액은 누적시킨다.
커피가 다 떨어지면 판매를 중지한다.
추후에 커피가 추가 될 수 있으므로 확장성을 고려했다.
추가되는 커피는 hash_menu에 해쉬형태로 입력하는 것으로 추가가 가능하다.
"""
coffee = 10
costs = 0
total = 0
# 메뉴번호:{} <-- 2중 해쉬구조로 입력 받는다.
hash_menu = { 1:{"아메리":300}, 2:{"라떼":350}, 3:{"그린티":400}, 4:{"안 사요":0}, 5:{"스페샬":900} }
list = []
for i in hash_menu :
list.append( hash_menu.get(i) )
# 메뉴 만들기
while coffee :
i = 1
show_m = ""
for z in list :
for m_name in z.keys() :
print("%s. %s price : %s " %(i, m_name, z.get(m_name) ))
i += 1
print("#"*25)
print("커피를 판매합니다. 커피를 선택해주십시요.")
print("#"*25)
menu_sel = int(input())
# 메뉴에 없는 것 선택 시
if menu_sel > len(list) :
print("메뉴에 없는 메뉴입니다. 다시 선택해 주십시요.\n")
continue
for sel in list[menu_sel-1] :
print("선택하신 커피는 %s 입니다. 가격은 %s 입니다." % (sel, list[menu_sel-1].get(sel)) )
total = total + list[menu_sel-1].get(sel)
coffee -= 1
print( "coffee의 잔량은 %s 입니다. 현재까지 총 수익금은 %s원 입니다.\n" %(coffee, total) )
if coffee < 0 :
coffee = 0
if menu_sel == 4 :
coffee = 0
'나는개발자다!! > Python' 카테고리의 다른 글
파이썬 그 두번째 썰~ (0) | 2014.09.23 |
---|---|
Python 관련 첫번째 썰~ (0) | 2014.09.16 |