Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime as dt
- """
- date_format = '%d.%m.%Y'
- moment = dt.datetime.strptime('16.12.2019', date_format) # что-то вроде 2019-12-16 00:00:00
- day = moment.date() # дату: 2019-12-16
- now = dt.datetime.now()
- print(now) # время на текущий момент в формате: 2019-01-31 13:33:27.506227
- print(now.date()) # текущую дату: 2019-01-31
- """
- class Record:
- def __init__(self, amount: int, comment: str, date: dt.date = None) -> None:
- self.amount = amount
- if date is None:
- self.date = dt.datetime.now().date()
- else:
- self.date = dt.datetime.strptime(date, '%d.%m.%Y').date()
- self.comment = comment
- class Calculator:
- def __init__(self, limit) -> None:
- self.limit = limit
- self.records = []
- def add_record(self, record: Record) -> None: # добавление объекта класса Record в конец списка
- self.records.append(record)
- def show(self): # тестовый метод, УДАЛИТЬ ПЕРЕД ОТПРАВКОЙ
- for i in self.records:
- print(f'{i.date} | {i.amount} | {i.comment}')
- def get_today_stats(self) -> int:
- now = dt.datetime.now()
- amount: int = 0
- for i in self.records:
- if i.date == now.date():
- amount += i.amount
- return amount
- def get_week_stats(self) -> str:
- """
- Узнаем дату равно 7 днецй назад с сегодняшнего дня
- включительно (потому и days=6)
- """
- day_week_ago = dt.date.today() - dt.timedelta(days=6)
- today = dt.datetime.now().date()
- amount = 0
- for i in self.records:
- if day_week_ago <= i.date <= today:
- amount += i.amount
- return f'За неделю с {day_week_ago} по {today} было потрачено: {amount}'
- class CashCalculator(Calculator):
- def __init__(self):
- self.EURO_RATE: float = 70.0
- self.USD_RATE: float = 60.0
- def get_today_stats(self) -> str:
- pass
- def get_today_cash_remained(self, currency: str) -> str:
- needed_currency: str = ''
- money_spend_today = 0
- now = dt.datetime.now()
- for i in self.records:
- if i.date == now.date():
- money_spend_today += i.amount
- if currency == 'eur':
- needed_currency = 'Euro '
- self.limit = round(self.limit / self.EURO_RATE, 2)
- money_spend_today = round(money_spend_today / self.EURO_RATE, 2)
- elif currency == 'usd':
- needed_currency = 'USD'
- self.limit = round(self.limit / self.USD_RATE, 2)
- money_spend_today = round(money_spend_today / self.USD_RATE, 2)
- else:
- needed_currency = 'руб'
- available_cash: int = self.limit - money_spend_today
- if available_cash < 0:
- return f'Денег нет, держись: твой долг - {abs(available_cash)} {needed_currency}'
- elif available_cash == 0:
- return f'Денег нет, держись'
- else:
- return f'На сегодня осталось {available_cash} {needed_currency}'
- class CaloriesCalculator(Calculator):
- def get_today_stats(self) -> None:
- now = dt.datetime.now()
- amount: int = 0
- for i in self.records:
- if i.date == now.date():
- amount += i.amount
- return f'Сегодня было употреблено: {amount} калорий'
- def get_week_stats(self):
- """
- Узнаем дату равно 7 днецй назад с сегодняшнего дня
- включительно (потому и days=6)
- """
- day_week_ago = dt.date.today() - dt.timedelta(days=6)
- today = dt.datetime.now().date()
- amount = 0
- for i in self.records:
- if day_week_ago <= i.date <= today:
- amount += i.amount
- return f'За неделю с {day_week_ago} по {today} было употреблено: {amount}'
- def get_calories_remained(self):
- calories_eaten = 0
- now = dt.datetime.now()
- for i in self.records:
- if i.date == now.date():
- calories_eaten += i.amount
- available_calories_to_eat: int = self.limit - calories_eaten
- if available_calories_to_eat <= 0:
- return f'Хватит есть!'
- else:
- return f'Сегодня можно съесть что-нибудь ещё, но с общей калорийностью не более {available_calories_to_eat} кКал'
- """
- # БЛОК ПРОВЕРКИ
- r1 = Record(amount=145, comment='Безудержный шопинг', date='17.05.2021')
- r2 = Record(amount=1568, comment='Наполнение потребительской корзины', date='17.05.2021')
- r3 = Record(amount=691, comment='Катание на такси', date='17.05.2021')
- # для CaloriesCalculator
- r4 = Record(amount=1186,
- comment='Кусок тортика. И ещё один.',
- date='17.05.2021')
- r5 = Record(amount=84, comment='Йогурт.', date='17.05.2021')
- r6 = Record(amount=2140, comment='Баночка чипсов.', date='17.05.2021')
- calc = Calculator(1000)
- calc.add_record(r1)
- calc.add_record(r2)
- calc.add_record(r3)
- calc.show()
- cash_calc = CashCalculator(5000)
- calo_calc = CaloriesCalculator(2500)
- cash_calc.add_record(r1)
- cash_calc.add_record(r2)
- cash_calc.add_record(r3)
- calo_calc.add_record(r4)
- calo_calc.add_record(r5)
- calo_calc.add_record(r6)
- # проверка калькулятора денег
- cash_calc.show() # тестовый метод, УДАЛИТЬ ПЕРЕД ОТПРАВКОЙ
- print(cash_calc.get_today_stats())
- print(cash_calc.get_week_stats())
- print(cash_calc.get_today_cash_remained('usd'))
- print()
- # проверка калькулятора калорий
- calo_calc.show() # тестовый метод, УДАЛИТЬ ПЕРЕД ОТПРАВКОЙ
- print(calo_calc.get_today_stats())
- print(calo_calc.get_week_stats())
- print(calo_calc.get_calories_remained())
- """
Advertisement
Add Comment
Please, Sign In to add comment