GURU/PYTHON & HTML

[PYTHON Unit 9: 함수 심화] starbucks

myejinni 2022. 1. 10. 18:18

 

menu1 = "아메리카노"
menu2 = "카페 라떼"

price1 = 4500
price2 = 5000

tall = 0
grande = 500
venti = 1000

total_price = 0
        
print("===== 2022 Starbucks Menu =====")
print("1. %s : %d원" % (menu1, price1))
print("2. %s : %d원\n" % (menu2, price2))
print("사이즈 : Tall + %d원, Grande + %d원, Venti +%d원" %(tall, grande,venti))
print("===============================")

menu = (int(input("메뉴를 선택해주세요: ")))

if menu==1:
    print("%s를 선택하셨습니다." %menu1)
    total_price += price1
    
elif menu==2:
    print("%s를 선택하셨습니다." %menu2)
    total_price += price2
    
else: #잘못 입력
    print("잘못 입력하셨습니다.")

print("현재 주문 금액 : %d\n" %total_price)

size = (int(input("사이즈를 선택해주세요(1. Tall 2.Grande 3.Venti): ")))

if size==1: #Tall
    total_price += tall
    
elif size==2: #Grande
    total_price += grande

elif size==3: #Venti
     total_price += venti
    
else: #잘못 입력
    print("잘못 입력하셨습니다.")

print("현재 주문 금액: %d" %total_price)

cash = (int(input("현금을 넣어주세요: ")))
change = cash - total_price

print("잔돈 %d원 입니다. 안녕히 가십시오." %change)

구현한 코드의 실행결과는 위와 같다.

위 코드에서 구현된 각각의 기능을 모듈화시켜 함수로 분리해 보았다.

 

2. 함수 활용

def showMenu():
     print("===== 2022 Starbucks Menu =====")
     print("1. %s : %d원" % (menu1, price1))
     print("2. %s : %d원\n" % (menu2, price2))
     print("사이즈 : Tall + %d원, Grande + %d원, Venti +%d원" %(tall, grande,venti))
     print("===============================")

def selectMenu():
    global total_price
    
    menu = int(input("메뉴를 선택해주세요:"))
    
    if menu==1:
        print("%s를 선택하셨습니다." %menu1)
        total_price += price1
    
    elif menu==2:
        print("%s를 선택하셨습니다." %menu2)
        total_price += price2
    
    else: #잘못 입력
        print("잘못 입력하셨습니다.")

    print("현재 주문 금액 : %d\n" %total_price)

def selectSize():
    global total_price
    
    size = (int(input("사이즈를 선택해주세요(1. Tall 2.Grande 3.Venti): ")))

    if size==1: #Tall
        total_price += tall
    
    elif size==2: #Grande
        total_price += grande

    elif size==3: #Venti
         total_price += venti
    
    else: #잘못 입력
        print("잘못 입력하셨습니다.")

    print("현재 주문 금액: %d" %total_price)
    
def payment():
    cash = (int(input("현금을 넣어주세요: ")))
    change = cash - total_price

    print("잔돈 %d원 입니다. 안녕히 가십시오." %change)
    
if __name__=="__main__": #메인
    menu1 = "아메리카노"
    menu2 = "카페라떼"

    price1 = 4500
    price2 = 5000

    tall = 0
    grande = 500
    venti = 1000

    total_price = 0
        
    showMenu()
    selectMenu()
    selectSize()
    payment()

 

함수를 통해 각 기능을 나누어 구현한 코드의 실행결과는 위와 같다.

이전과 실행결과는 동일하지만 코드가 보다 깔끔해졌다.

 

3. 루프 돌면서 주문 받기

def showMenu():
     print("===== 2022 Starbucks Menu =====")
     print("0. 주문종료")
     print("1. %s : %d원" % (menu1, price1))
     print("2. %s : %d원\n" % (menu2, price2))
     print("사이즈 : Tall + %d원, Grande + %d원, Venti +%d원" %(tall, grande,venti))
     print("===============================")

def selectMenu():
    global total_price
    global breakFlag
    
    menu = int(input("메뉴를 선택해주세요:"))
    
    if menu==1:
        print("%s를 선택하셨습니다." %menu1)
        total_price += price1
    
    elif menu==2:
        print("%s를 선택하셨습니다." %menu2)
        total_price += price2
        
    elif menu==0: #주문종료
        print("주문을 종료합니다.")
        breakFlag=True
    
    else: #잘못 입력
        print("잘못 입력하셨습니다.")

    print("현재 주문 금액 : %d\n" %total_price)

def selectSize():
    global total_price
    
    size = (int(input("사이즈를 선택해주세요(1. Tall 2.Grande 3.Venti): ")))

    if size==1: #Tall
        total_price += tall
    
    elif size==2: #Grande
        total_price += grande

    elif size==3: #Venti
         total_price += venti
    
    else: #잘못 입력
        print("잘못 입력하셨습니다.")

    print("현재 주문 금액: %d" %total_price)
    
def payment():
    cash = (int(input("현금을 넣어주세요: ")))
    change = cash - total_price

    print("잔돈 %d원 입니다. 안녕히 가십시오." %change)
    
if __name__=="__main__": #메인
    menu1 = "아메리카노"
    menu2 = "카페라떼"

    price1 = 4500
    price2 = 5000

    tall = 0
    grande = 500
    venti = 1000

    total_price = 0

    breakFlag = False

while True:       
    showMenu()
    selectMenu()

    if breakFlag ==True: # flag 확인 시 true값 가지면 break
        break
    
    selectSize()

payment()

4.

def showMenu():
     print("===== 2022 Starbucks Menu =====")
     print("0. 주문종료")
     print("1. %s : %d원" % (menu1, price1))
     print("2. %s : %d원\n" % (menu2, price2))
     print("사이즈 : Tall + %d원, Grande + %d원, Venti +%d원" %(tall, grande,venti))
     print("===============================")

def selectMenu():
    global coffee
    global breakFlag
    
    menu = int(input("메뉴를 선택해주세요:"))
    
    if menu==1:
        print("%s를 선택하셨습니다." %menu1)
        coffee += price1
    
    elif menu==2:
        print("%s를 선택하셨습니다." %menu2)
        coffee += price2
        
    elif menu==0: #주문종료
        print("주문을 종료합니다.")
        breakFlag = True
    
    else: #잘못 입력
        print("잘못 입력하셨습니다.")

def selectSize():
    global coffee
    global total_price
    global continueFlag
    
    size = (int(input("사이즈를 선택해주세요(1. Tall 2.Grande 3.Venti): ")))

    if size==1: #Tall
        coffee += tall
        total_price += coffee
        
    elif size==2: #Grande
        coffee += grande
        total_price += coffee

    elif size==3: #Venti
         coffee += venti
         total_price += coffee
    
    else: #잘못 입력
        print("잘못 입력하셨습니다.")
        continueFlag = True

    print("현재 주문 금액: %d\n" %total_price)
    
def payment():
    cash = (int(input("현금을 넣어주세요: ")))
    change = cash - total_price

    print("잔돈 %d원 입니다. 안녕히 가십시오." %change)
    
if __name__=="__main__": #메인
    menu1 = "아메리카노"
    menu2 = "카페라떼"

    price1 = 4500
    price2 = 5000

    tall = 0
    grande = 500
    venti = 1000

    total_price = 0

    breakFlag = False

while True:
    continueFlag = False
    coffee = 0 #음료 단가+사이즈 추가금액
    
    showMenu()
    selectMenu()

    if breakFlag == True: # flag 확인 시 true값 가지면 break
        break
    
    if continueFlag == True: #잘못 입력 시  메뉴 다시 보여줌
        continue
    
    selectSize()

payment()