데이터 꿈나무

[Python] 층수에 따라 음식값 받는 프로그램 본문

Language/Python

[Python] 층수에 따라 음식값 받는 프로그램

ye_ju 2023. 1. 29. 15:18

안녕하세요~ 이번 포스팅은 층수에 따라 음식값을 다르게 받도록 하는 프로그램을 작성해보려고 해요~!

다른 방법들도 많겠지만, 제가 짠 코드를 한번 설명해드리려고 합니다!

재미있게 봐주세요:)


 

문제

 

학교 앞에 새로운 배달 식당이 문을 열었습니다.

이 식당은 음식값을 집의 층수에 따라 구분해서 받는다고 합니다.

디음 표를 기반으로 층수에 따른 가격을 산정해야 합니다. 주문자가 집 호수를 입력하면 몇 층인지를 판단하여 가격을 출력하세요. 예를 들어 101호는 1층, 1502호는 15층으로 계산합니다.

 

1~5층 기본가격 4000원
6~10층 10% 추가
11층~15층 20% 추가
16층~20층 30% 추가
21층 이상 주문 거부

 

코드

 

price_basic = 4000  # 기본가격
price_10 = price_basic + (price_basic * 0.1)
price_20 = price_basic + (price_basic * 0.2)
price_30 = price_basic + (price_basic * 0.3)

우선 기본 가격과 10%, 20%, 30% 추가한 가격을 각각의 변수에 넣어줍니다.

 

user = input("집 호수를 숫자만 입력하세요.")

그리고 사용자로부터 집 호수를 입력받습니다.

아래에서 슬라이스를 이용하여 호수의 층수가 1자리(ex.9층)인지, 2자리(ex.15층)인지 구분할 것이기 때문에 문자형으로 입력받도록 해줍니다.

입력받은 수를 user 변수에 저장해줍니다.

 

if len(user) < 4:   # 해당 호수가 3자리인 경우
    num = int(user[:1])
elif len(user) < 5:  # 해당 호수가 4자리인 경우
    num = int(user[:2])

만약 입력받은 호수가 총 3자리인 경우, 슬라이스를 이용해 입력받은 값의 첫번째 수만 뽑아서 int를 통해 수치형으로 변환시켜 줍니다. 그리고 변수 num에 저장해줍니다.

예를 들어, 사용자가 903을 입력한 경우 맨 앞자리 문자 9만 뽑아내서 이것을 숫자 9로 변환시켜 준 것입니다.

 

그게 아니라 입력받은 호수가 4자리인 경우, 똑같이 슬라이스를 이용하여 이번엔 두번째 문자까지 뽑아내줍니다. 그리고 수치형으로 바꿔준 후 변수 num에 저장해줍니다.

예를 들어, 사용자가 1502를 입력한 경우 문자 15를 뽑아내서 이것을 숫자 15로 변환시켜 준 것입니다.

 

 

if (num >= 1) and (num <=5):
    print("해당 호수의 음식 가격은 {}원입니다.".format(price_basic))
elif (num >= 6) and (num <= 10):
    print("해당 호수는 10% 추가가 되어 {}원입니다.".format(price_10))
elif (num >= 11) and (num <= 15):
    print("해당 호수는 20% 추가되어 {}원입니다.".format(price_20))
elif (num >= 16) and (num <= 20):
    print("해당 호수는 30% 추가되어 {}원입니다.".format(price_30))
else:
    print("층수가 너무 높아요. 주문을 거부합니다.")

그리고 조건문과 논리 연산자를 이용해서 입력받은 숫자가 1이상 5이하인 경우(1층~5층), 해당 호수의 음식 가격은 기본 가격을 출력합니다.

그게 아니라면 6이상 10이하인 경우(6층~10층), 기본가격에서 10% 추가된 음식 가격을 출력합니다.

그게 아니라면 11이상 15이하인 경우(11층~15층), 기본가격에서 20% 추가된 음식 가격을 출력합니다.

그게 아니라면 16이상 20이하인 경우(16층~20층), 기본가격에서 30% 추가된 음식 가격을 출력합니다.

그리고 21층 이상인 경우, 층수가 너무 높다는 메시지와 함께 주문을 거부합니다.

 

출력 결과

 

● 1~5층 출력 결과

 

● 6~10층 출력 결과

 

● 11~15층 출력 결과

● 16~20층 출력 결과

 

● 21층 이상 출력 결과

 

 

어떠셨나요? 재밌지 않나요?ㅎㅎ 처음에는 조금 헷갈릴 수 있는데 생각하다보면 금방 코드 짜실 수 있을 거예요~!

지금까지 긴 글 읽어주셔서 감사합니다!!

Comments