데이터 분석가:Applied Data Analytics/파이썬

사각형 넓이 구하기 와 키오스크 만들기

데이터분석 2025. 2. 4. 10:45
320x100
728x90

사각형 넓이 구하기

# 사각형 넓이를 구하는 클래스 완성!
class Square:
    def __init__(self):
        self.square = int(input('넓이를 구하고 싶은 사각형의 숫자를 써주세요.\n 1.직사각형 2.평행사변형 3.사다리꼴 \n >>>'))

        if self.square == 1:
            print('직사각형 함수는 rect()입니다.')  #Square 클래스에 rect() 메서드를 추가합니다.

        elif self.square == 2:
            print('평행사변형 함수는 par()입니다.')    #Square 클래스에 par() 메서드를 추가합니다.
       
        elif self.square == 3:
            print('사다리꼴 함수는 trape()입니다.')      #Square 클래스에 trape() 메서드를 추가합니다.
       
        else:
            print('1, 2, 3 중에서 다시 입력해주세요')

    def rect(self):     #직사각형의 넓이를 구하는 메서드
        width, vertical = map(int, input('가로, 세로를 입력하세요. 예시 : 가로,세로\n >>>').split(',')) #가로,세로 입력
        area = width * vertical    #넓이를 구하는 식
        result = '직사각형의 넓이는 : ' + str(area)
        return result
    def par(self):     #평행사변형 넓이구하는 메서드
        lower, height = map(int, input('밑변, 높이를 입력하세요. 예시 : 밑변,높이\n >>>').split(','))  # 밑변과 높이를 입력받음
        area = lower * height  # 평행사변형 넓이 계산
        result = '평행사변형의 넓이는 : ' + str(area)  # 결과 문자열 생성
        return result  # 결과 반환

    def trape(self):  # 사다리꼴의 넓이를 구하는 메서드
        lower, upper, height = map(int, input('밑변, 윗변, 높이를 입력하세요. 예시 : 밑변,윗변,높이\n >>>').split(','))  # 윗변, 아랫변, 높이 입력받음
        area = ((lower + upper) * height) / 2  # 사다리꼴 넓이 계산
        result = '사다리꼴의 넓이는 : ' + str(area)  # 결과 문자열 생성
        return result
a = Square()
a.par()
a.trape()
 
 
 
 
 

(출처 : 모두연 파이썬강의 중)

 

키오스트 만들기

menu = ['americano', 'latte', 'mocha', 'yuza_tea', 'green_tea', 'choco_latte']
price = [2000, 3000, 3000, 2500, 2500, 3000]
# print(menu[3:], price[3:])
class Kiosk:
    def __init__(self):
        self.menu = menu  # 메뉴 리스트
        self.price = price  # 가격 리스트
        self.price_sum = 0  # 선택한 음료의 가격(초기값)
    def menu_print(self):
        for i in range(len(self.menu)):  # 메뉴의 개수만큼 반복
            print(i+1, self.menu[i], ' : ', self.price[i],'원')  # 메뉴와 가격을 출력합니다.

      # 주문
    def menu_select(self):
      print()
      n = 0
      while n < 1 or len(menu) < n:
        n = int(input("음료의 번호를 입력하세요 : "))  # 음료 번호 입력

        #메뉴판에 있는 음료 번호일때
        if 1 <= n & n <= len(menu):
          self.price_sum = self.price[n-1]  # 선택 음료의 가격

        # 메뉴에 없는 번호일때
        else:
          print("없는 메뉴입니다. 다시 주문해 주세요.")

        # 음료 온도 물어보기
        t = 0  # 기본값을 넣어주고
        while t != 1 and t != 2:  # 1이나 2를 입력할 때까지 물어보기
          try:
            t= int(input("HOT 음료는 1을, ICE 음료는 2를 입력하세요 : "))
            if t == 1:
                    self.temp = "HOT"
            elif t == 2:
                    self.temp = "ICE"
            else:
                print("1과 2 중 하나를 입력하세요.\n")
          except ValueError:
                print("숫자로 입력해주세요.\n")
           
        print(f"{self.temp} {self.menu[n-1]}  : {self.price_sum}원") # 온도 포함하여 출력
       

a = Kiosk()  # 객체 생성
a.menu_print()  # 메뉴 출력
a.menu_select()

(출처 : 모두연 파이썬강의 중)

 

 

 

추가주문 추가하기 

menu = ['americano', 'latte', 'mocha', 'yuza_tea', 'green_tea', 'choco_latte']
price = [2000, 3000, 3000, 2500, 2500, 3000]
# print(menu[3:], price[3:])
class Kiosk:
    def __init__(self):
        self.menu = menu  # 메뉴 리스트
        self.price = price  # 가격 리스트
        self.price_sum = 0  # 선택한 음료의 가격(초기값)
        self.order_menu = []
        self.order_price = []

    def menu_print(self):
        for i in range(len(self.menu)):  # 메뉴의 개수만큼 반복
            print(i+1, self.menu[i], ' : ', self.price[i],'원')  # 메뉴와 가격을 출력합니다.

      # 주문
    def menu_select(self):
        while True: #추가 주문위한 반복
          print("\n 음료를 선택하세요 (0 입력 시 주문 종료)")
          n = int(input("음료의 번호를 입력하세요 : "))  # 음료 번호 입력

          #주문 종료
          if n == 0:
            print("\n 주문이 완료되었습니다.")
            break

        #메뉴판에 있는 음료 번호일때
          if 1 <= n & n <= len(menu):
            self.price_sum = self.price[n-1]  # 선택 음료의 가격

        # 메뉴에 없는 번호일때
          else:
            print("없는 메뉴입니다. 다시 주문해 주세요.")

        # 음료 온도 물어보기
          t = 0  # 기본값을 넣어주고
          while t != 1 and t != 2:  # 1이나 2를 입력할 때까지 물어보기
            try:
              t= int(input("HOT 음료는 1을, ICE 음료는 2를 입력하세요 : "))
              if t == 1:
                    self.temp = "HOT"
              elif t == 2:
                    self.temp = "ICE"
              else:
                  print("1과 2 중 하나를 입력하세요.\n")
            except ValueError:
                print("숫자로 입력해주세요.\n")
       #주문 리스트에 추가
          self.order_menu.append(self.temp + ' ' + self.menu[n-1])
          self.order_price.append(self.price[n-1])
          print(f"{self.temp} {self.menu[n-1]}  : {self.price_sum}원 주문이 추가되었습니다.")
       # 🔹 주문 내역 출력
        print("\n 주문 내역")
        for i in range(len(self.order_menu)):
            print(f"{self.order_menu[i]} : {self.order_price[i]}원")

        # 🔹 총 금액 출력
        total_price = sum(self.order_price)
        print(f"\n 총 결제 금액 : {total_price}원")
       

a = Kiosk()  # 객체 생성
a.menu_print()  # 메뉴 출력
a.menu_select()

(출처 : 모두연 파이썬강의 중)

 

print(f"{self.temp} {self.menu[n-1]}  : {self.price_sum}원 주문이 추가되었습니다.")

설명

1. print(...)

  • 출력 함수
  • print()는 괄호 안의 문자열을 화면에 출력하는 역할을 합니다.

2. f"{...}" (f-string)

  • Python의 문자열 포매팅 방식으로 {} 내부에 변수나 표현식을 넣으면 해당 값이 문자열 안에 삽입됨.
  • 예를 들어:
     
    name = "Alice" print(f"Hello, {name}!")
    출력: Hello, Alice!

3. self.temp (음료 온도)

  • 사용자가 선택한 **음료의 온도(HOT 또는 ICE)**를 저장한 변수.
  • self.temp = "HOT" 또는 self.temp = "ICE"로 설정됨.

4. self.menu[n-1] (선택한 음료 이름)

  • self.menu 리스트에서 사용자가 선택한 음료의 이름을 가져옴.
  • n-1을 사용하는 이유:
    • 사용자는 1부터 시작하는 메뉴 번호를 입력하지만,
    • 리스트의 인덱스는 0부터 시작하기 때문.
    • 예를 들어, 사용자가 n=2(2번 메뉴)를 선택하면 실제 리스트에서 가져올 값은 menu[1].

5. self.price_sum (선택한 음료 가격)

  • 사용자가 선택한 음료의 가격을 저장하는 변수.

self.order_menu.append(self.temp + ' ' + self.menu[n-1])

설명

1. self.order_menu

  • 사용자가 주문한 음료 목록을 저장하는 리스트.
  • 사용자가 주문할 때마다 append()를 사용하여 새로운 항목을 추가함.
  • 예: self.order_menu = [] # 빈 리스트 (처음에는 아무것도 없음)

2. .append(...)

  • 리스트에 새로운 항목을 추가하는 함수.
  • self.order_menu.append(새로운_값) → 리스트에 새로운_값을 추가함.
  • 예:
     
    my_list = [] my_list.append("apple") print(my_list) # 출력: ['apple']

3. self.temp (HOT 또는 ICE)

  • 사용자가 선택한 **음료의 온도(HOT 또는 ICE)**를 저장한 변수.
  • self.temp = "HOT" 또는 self.temp = "ICE"로 설정됨.

4. ' ' (공백 문자열)

  • "HOT" + ' ' + "latte" → "HOT latte"
  • "ICE" + ' ' + "mocha" → "ICE mocha"
  • 두 개의 문자열 사이에 공백을 넣어 하나의 문자열로 합침.

5. self.menu[n-1] (음료 이름)

  • self.menu 리스트에서 사용자가 선택한 음료의 이름을 가져옴.
  • n-1을 사용하는 이유:
    • 사용자는 1부터 시작하는 메뉴 번호를 입력하지만,
    • 리스트의 인덱스는 0부터 시작하기 때문.
    • 예를 들어, 사용자가 n=2(2번 메뉴)를 선택하면 실제 리스트에서 가져올 값은 menu[1].

 

주문표 출력추가

menu = ['americano', 'latte', 'mocha', 'yuza_tea', 'green_tea', 'choco_latte']
price = [2000, 3000, 3000, 2500, 2500, 3000]

class Kiosk:
    def __init__(self):
        self.menu = menu  # 메뉴 리스트
        self.price = price  # 가격 리스트
        self.price_sum = 0  # 선택한 음료의 가격(초기값)
        self.order_menu = []  # 주문 리스트
        self.order_price = []  # 가격 리스트

    def menu_print(self):
        """메뉴 출력"""
        print("\n 메뉴판")
        for i in range(len(self.menu)):  
            print(f"{i+1}. {self.menu[i]} : {self.price[i]}원")

    def menu_select(self):
        """음료 선택 및 주문 추가"""
        while True:
            print("\n 음료를 선택하세요 (0 입력 시 주문 종료)")
            try:
                n = int(input("음료의 번호를 입력하세요 : "))  
            except ValueError:
                print(" 숫자로 입력해주세요.\n")
                continue  

            # 주문 종료
            if n == 0:
                print("\n🛒 주문이 완료되었습니다.")
                break

            # 유효한 메뉴 선택 확인
            if 1 <= n <= len(self.menu):
                selected_menu = self.menu[n-1]
                selected_price = self.price[n-1]
            else:
                print(" 없는 메뉴입니다. 다시 주문해 주세요.")
                continue  

            # 음료 온도 선택
            t = 0  
            while t not in [1, 2]:  
                try:
                    t = int(input("HOT 음료는 1을, ICE 음료는 2를 입력하세요 : "))
                    if t == 1:
                        temp = "HOT"
                    elif t == 2:
                        temp = "ICE"
                    else:
                        print(" 1과 2 중 하나를 입력하세요.\n")
                except ValueError:
                    print(" 숫자로 입력해주세요.\n")

            # 주문 리스트에 추가