Найти - Пользователи
Полная версия: Хьюстон, у нас проблемы...
Начало » Python для новичков » Хьюстон, у нас проблемы...
1
El_Tejon
 import datetime as dt
class Calculator:
    records = []
    def __init__(self, limit):
        self.limit = limit
    def add_record(self, Record):
        self.records.append([Record.amount, Record.comment, Record.date])
    def get_today(self):
        today_stats = 0
        for record in self.records:
            if record[2] == dt.datetime.now().date():
                today_stats += record[0]
        return today_stats
    def get_today_remained(self):
        for record in self.records:
            if record[2] == dt.datetime.now().date():
                self.limit -= record[0]
        return self.limit
    def get_week(self):
        week_stats = 0
        for record in self.records:
            if record[2]>=(dt.datetime.now() - dt.timedelta(days=7)).date():
                week_stats += record[0]
        return week_stats
class Record:
    def __init__(self, amount, comment, date = dt.datetime.now()):
        self.amount = amount
        self.comment = comment
        if isinstance(date, str):
            self.date = (dt.datetime.strptime(date, '%d.%m.%Y').date())
        else:
            self.date = date.date()
class CashCalculator(Calculator):
    USD_RATE = 74.39
    EURO_RATE = 81.45
    def add_record(self, Record):
        Calculator.add_record(self, Record)
    def get_today_stats(self):
        Calculator.get_today(self)
    def get_today_cash_remained(self, currency):
        self.currency = currency
        Calculator.get_today_remained(self)
        if self.currency == 'usd':
            self.limit /= CashCalculator.USD_RATE
            self.currency = 'USD'
        elif self.currency == 'eur':
            self.limit /= CashCalculator.EURO_RATE
            self.currency = 'Euro'
        else:
            self.currency = 'руб'
        if self.limit > 0:
            print(f'На сегодня осталось {round(self.limit)} {self.currency}')
        elif self.limit == 0:
            print(f'Денег нет, держись')
        else:
            print(f'Денег нет, держись: твой долг - {round(abs(self.limit))} {self.currency}')
    def get_week_stats(self):
        Calculator.get_week(self)
Calc = CashCalculator(10000)
r1 = Record(amount=9145, comment="Безудержный шопинг")
r2 = Record(amount=1568, comment="Наполнение потребительской корзины", date="09.03.2019")
r3 = Record(amount=1691, comment="Катание на такси")
r4 = Record(amount=1777, comment="Винишко", date="02.05.2020")
r5 = Record(amount=6356, comment="Корм для шерстяной шкуры", date="30.04.2020")
r6 = Record(amount=2780, comment="Синий овраг", date="25.04.2020")
Calc.add_record(r1)
Calc.add_record(r2)
Calc.add_record(r3)
Calc.add_record(r4)
Calc.add_record(r5)
Calc.add_record(r6)
print(Calc.get_today_stats())
print(Calc.get_today_cash_remained('rub'))
print(Calc.get_week_stats())


Уважаемые программисты, почему при обращении к функциям (три последние строки) - возвращается “None”?
rami
El_Tejon
Уважаемые программисты, почему при обращении к функциям (три последние строки) - возвращается “None”?
Чтобы функция что-то возвращала нужно использовать return (весь код не проверял):

 class CashCalculator(Calculator):
    USD_RATE = 74.39
    EURO_RATE = 81.45
    def add_record(self, Record):
        Calculator.add_record(self, Record)
 
    def get_today_stats(self):
        return Calculator.get_today(self)
 
    def get_today_cash_remained(self, currency):
        self.currency = currency
        Calculator.get_today_remained(self)
        if self.currency == 'usd':
            self.limit /= CashCalculator.USD_RATE
            self.currency = 'USD'
        elif self.currency == 'eur':
            self.limit /= CashCalculator.EURO_RATE
            self.currency = 'Euro'
        else:
            self.currency = 'руб'
 
        if self.limit > 0:
            balance = f'На сегодня осталось {round(self.limit)} {self.currency}'
        elif self.limit == 0:
            balance = f'Денег нет, держись'
        else:
            balance = f'Денег нет, держись: твой долг - {round(abs(self.limit))} {self.currency}'
        return balance
 
    def get_week_stats(self):
        return Calculator.get_week(self)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB