728x90
반응형
from abc import ABC, abstractmethod
electricity_usage = [
{"date": "2024-11-01", "usage": 12.5},
{"date": "2024-11-02", "usage": 15.3},
{"date": "2024-11-03", "usage": 10.8},
{"date": "2024-11-04", "usage": 14.2},
{"date": "2024-11-05", "usage": 13.6}
]
class ElectricityData(ABC):
def __init__(self, usage_data):
self._usage_data = usage_data
self._total_usage = self.calculate_total_usage()
@property
def usage_data(self):
return self._usage_data
@usage_data.setter
def usage_data(self, value):
self._usage_data = value
self._total_usage = self.calculate_total_usage()
@property
def total_usage(self):
return self._total_usage
@total_usage.setter
def total_usage(self, value):
self._total_usage = value
@abstractmethod
def calculate_total_usage(self):
pass
@abstractmethod
def get_usage_on_date(self, date):
pass
def add_usage(self, date, usage):
self._usage_data.append({"date": date, "usage": usage})
self._total_usage = self.calculate_total_usage()
def remove_usage(self, date):
self._usage_data = [
data for data in self._usage_data if data["date"] != date]
self.total_usage = self.calculate_total_usage()
class HomeElectricityData(ElectricityData):
def __init__(usage, usage_data):
super().__init__(usage_data)
def calculate_total_usage(self):
return sum(data["usage"] for data in self._usage_data)
def get_usage_on_date(self, date):
for data in self._usage_data:
if data["date"] == date:
return data["usage"]
return
@classmethod
def filtered(cls, usage_data, start_date, end_date):
filtered_data = [
data for data in usage_data if start_date <= data["date"] <= end_date
]
return filtered_data
@staticmethod
def find_highest_usage(usage_data):
if not usage_data:
return
return max(usage_data, key=lambda x: x["usage"])
e1 = HomeElectricityData(electricity_usage)
print(f"총 전력 사용량: {e1.total_usage:.1f}")
date = "2024-11-03"
print(f"{date}의 사용량: {e1.get_usage_on_date(date)}")
e1.add_usage("2024-11-06", 16.4)
filtered_data = HomeElectricityData.filtered(
electricity_usage, "2024-11-02", "2024-11-04")
print(f"특정 날짜 범위 내의 전력 사용량:{filtered_data}")
print(f"가장 높은 사용량:{HomeElectricityData.find_highest_usage(electricity_usage)}")
반응형
'하루코딩 > python 하루코딩' 카테고리의 다른 글
| [Python] 파일 입출력 (1) | 2024.12.06 |
|---|---|
| [Python] 영타자 연습 (0) | 2024.12.06 |
| [Pythone] 제품에 따른 출력 부모 자식 클래스 상속 (0) | 2024.11.28 |
| [Python] 날씨 분석 프로그래밍 함수화 (0) | 2024.11.27 |
| [Pythone] 함수 종합 프로그래밍 (날씨데이터 표시) (0) | 2024.11.27 |