728x90
파이썬 라이브러리 enum
#014 파이썬 라이브러리 : enum으로 가독성을 높이자
Python에서 enum 데이터 유형은 코드 가독성과 유지 관리성을 향상할 수 있는 고유한 유형으로 명명된 값 세트를 정의하는 방법을 제공합니다. enum 데이터 유형을 사용하면 프로그래머가 프로그램 전체에서 사용할 수 있는 고유한 이름과 값을 가진 일련의 상수를 정의할 수 있습니다.
예 제
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
favorite_color = Color.BLUE
print(favorite_color)
print(favorite_color.name)
print(favorite_color.value)
▶ 결과
Color.BLUE
BLUE
3
▶ 설명
이 예제에서는 favorite_color라는 새 변수를 정의하고 Color enum 유형에서 이름이 지정된 BLUE 값을 할당합니다. 그런 다음 "Color.BLUE"를 출력할 favorite_color 변수의 값을 인쇄합니다.
enum 데이터 유형을 사용하는 한 가지 이점은 미리 정의된 값을 사용하도록 강제하는 방법을 제공하여 오류를 줄이고 코드 유지 관리성을 향상하는 데 도움이 된다는 것입니다. 예를 들어 Color enum 유형에 정의되지 않은 값을 favorite_color 변수에 할당하려고 하면 오류가 발생합니다.
연습문제
잘 가는 중국음식점에 요일별 할인 메뉴가 있어요. 월요일은 마파두부밥, 화요일은 우육탕면, 수요일은 삼선짬뽕, 목요일은 게살볶음밥, 금요일은 잡채밥, 토요일은 탕수육, 일요일은 깐풍기를 할인해 줍니다.
날짜를 입력하면 요일을 계산해서 요일의 할인메뉴를 알려주는 파이썬 프로그램을 만들어보세요. 단, 가독성을 위해 요일별 메뉴는 enum으로 정의하세요.
▶ 풀이
# -*- coding:utf-8 -*-
from datetime import datetime
from enum import IntEnum
class Week(IntEnum):
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 3
THURSDAY = 4
FRIDAY = 5
SATURDAY = 6
SUNDAY = 7
def get_menu(input_date):
menu = {
Week.MONDAY: "마파두부밥",
Week.TUESDAY: "우육탕면",
Week.WEDNESDAY: "삼선짬뽕",
Week.THURSDAY: "게살볶음밥",
Week.FRIDAY: "잡채밥",
Week.SATURDAY: "탕수육",
Week.SUNDAY: "깐풍기",
}
return menu[input_date.isoweekday()]
# 일자를 입력받는다.
input_date = input("일자를 입력하세요. (YYYYMMDD): ")
# 입력받은 문자열을 일자로 변환
date_obj = datetime.strptime(input_date, "%Y%m%d").date()
# 요일의 메뉴를 가져온다.
menu_item = get_menu(date_obj)
# 출력한다.
print(f"'{input_date}'일의 할인메뉴는 '{menu_item}'입니다.")
▶ 결과
일자를 입력하세요. (YYYYMMDD): 20230322
'20230322'일의 할인메뉴는 '삼선짬뽕'입니다.
▶ 설명
- 사용자가 입력한 날짜에 따라 할인 메뉴를 출력하기 위해 datetime 및 enum 모듈을 사용하는 Python 프로그램입니다.
- Week 클래스는 요일을 멤버로 하는 IntEnum으로 정의됩니다.
- get_menu() 함수는 입력 날짜를 인수로 사용하고 soweekday() 메서드를 사용하여 요일을 기준으로 해당 날짜의 메뉴 항목을 반환합니다.
- 프로그램은 사용자에게 YYYYMMDD 형식으로 날짜를 입력하라는 메시지를 표시하고 날짜를 입력받습니다.
- 다음 datetime.strptime() 메서드를 사용하여 날짜 객체로 변환합니다.
- 마지막으로 프로그램은 날짜 객체를 인수로 사용하여 get_menu() 함수를 호출하고
- 해당 날짜의 메뉴 항목을 출력합니다.
감사합니다.
Do it! SQL을 찾아 주셔서 감사합니다. ♥ 댓글이 큰 힘이 됩니다. |
728x90
'IT > 파이썬 라이브러리 (Python)' 카테고리의 다른 글
#016 파이썬 라이브러리 : math.gcd 최대공약수의 활용 (35) | 2023.04.11 |
---|---|
#015 파이썬 라이브러리 : graphlib.TopologicalSorter 위상정렬을 알아보자 (41) | 2023.04.10 |
#013 파이썬 라이브러리 : bisect를 이용한 학점 부여 (38) | 2023.04.08 |
#012 파이썬 라이브러리 : pprint 데이터를 읽기 쉽게 출력 (45) | 2023.04.07 |
#011 파이썬 라이브러리 : heapq를 이용한 순위 매기기 (45) | 2023.04.06 |
댓글