Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime as dt
- class Record:
- """Класс основной информации"""
- def __init__(self, amount, comment, date=None):
- self.amount = amount
- self.comment = comment
- if date == None:
- now = dt.datetime.now()
- self.date = now.date()
- else:
- date_format = '%d.%m.%Y'
- moment = dt.datetime.strptime(date, date_format)
- self.date = moment.date()
- class Calculator:
- """Маретинский Класс"""
- def __init__(self, limit):
- self.limit = limit
- self.records = []
- def add_record(self, record):
- self.records.append(record)
- def get_today_stats(self):
- total = 0
- for record in self.records:
- if record.date == dt.datetime.now().date():
- total += record.amount
- return total
- def get_week_stats(self):
- total = 0
- now = dt.datetime.now().date()
- week = (now - dt.timedelta(days=7))
- for record in self.records:
- moment = record.date()
- if now >= moment >= week:
- total = record.amount
- return total
- class CashCalculator(Calculator):
- """Класс для подсчета денег"""
- USD_RATE = 60.00
- EURO_RATE = 70.00
- RUB_RATE = 1.00
- def get_today_cash_remained(self, currency):
- total = self.get_today_stats()
- if currency == 'rub':
- if self.limit > total:
- return f'На сегодня осталось {round((self.limit - total) / self.RUB_RATE)} руб'
- elif self.limit == total:
- return f'Денег нет, держись'
- return f'Денег нет, держись: твой долг - {round((total - self.limit) / self.RUB_RATE)} руб'
- if currency == 'eur':
- if self.limit > total:
- return f'На сегодня осталось {round((self.limit - total) / self.EURO_RATE)} eur'
- elif self.limit == total:
- return f'Денег нет, держись'
- return f'Денег нет, держись: твой долг - {round((total - self.limit) / self.EURO_RATE)} eur'
- if currency == 'usd':
- if self.limit > total:
- return f'На сегодня осталось {round((self.limit - total) / self.USD_RATE)} usd'
- elif self.limit == total:
- return f'Денег нет, держись'
- return f'Денег нет, держись: твой долг - {round((total - self.limit) / self.USD_RATE)} usd'
- class CaloriesCalculator(Calculator):
- """Класс для подсчета калорий"""
- def get_calories_remained(self):
- total = self.get_today_stats()
- answer = self.limit - total
- if answer > 0:
- return f'Сегодня можно съесть что-нибудь еще, но с общей калорийностью не более {answer} кКал'
- if answer <= 0:
- return f'Хватит есть!'
- # создадим калькулятор денег с дневным лимитом 1000
- cash_calculator = CashCalculator(1000)
- # дата в параметрах не указана,
- # так что по умолчанию к записи
- # должна автоматически добавиться сегодняшняя дата
- cash_calculator.add_record(Record(amount=145, comment='кофе'))
- # и к этой записи тоже дата должна добавиться автоматически
- cash_calculator.add_record(Record(amount=300, comment='Серёге за обед'))
- # а тут пользователь указал дату, сохраняем её
- cash_calculator.add_record(Record(amount=3000,
- comment='бар в Танин др',
- date='08.11.2019'))
- print(cash_calculator.get_today_cash_remained('руб'))
- # должно напечататься
- # На сегодня осталось 555 руб
Add Comment
Please, Sign In to add comment