From 195930c2b9f2e7a0db5fc801906d0fd62ed48d42 Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Mon, 13 Oct 2025 19:01:01 +0700 Subject: [PATCH 01/10] commit --- main_red.py | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 main_red.py diff --git a/main_red.py b/main_red.py new file mode 100644 index 0000000..4df6f06 --- /dev/null +++ b/main_red.py @@ -0,0 +1,104 @@ +import datetime as dt + + +class Record: + def __init__(self, amount, comment, date=''): + self.amount = amount + self.date = ( + dt.datetime.now().date() if + not + date else dt.datetime.strptime(date, '%d.%m.%Y').date()) + self.comment = comment + + """ + Ненужные переносы снижают читаемость: + self.date = ( + dt.datetime.now().date() + if not date + else dt.datetime.strptime(date, '%d.%m.%Y').date()) + + Я бы заменил всё на: + if date: + self.date = dt.datetime.strptime(date, '%d.%m.%Y').date() + else: + self.date = dt.datetime.now().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): + return sum([rec.amount for rec in self.records if rec.date == dt.datetime.now().date()]) + + def get_week_stats(self): + today = dt.datetime.now().date() + return sum([rec.amount for rec in self.records if 7 > (today - rec.date).days >= 0]) + + +class CaloriesCalculator(Calculator): + def get_calories_remained(self): # Получает остаток калорий на сегодня + x = self.limit - self.get_today_stats() + if x > 0: + return f'Сегодня можно съесть что-нибудь' \ + f' ещё, но с общей калорийностью не более {x} кКал' + else: + return ('Хватит есть!') + + +class CashCalculator(Calculator): + USD_RATE = float(60) # Курс доллар США. + EURO_RATE = float(70) # Курс Евро. + + def get_today_cash_remained(self, currency, + USD_RATE=USD_RATE, EURO_RATE=EURO_RATE): + cash_remained = self.limit - self.get_today_stats() + + d = {'usd': (USD_RATE, 'USD'), 'eur': (EURO_RATE, 'Euro'), 'rub': (1.0, 'руб')} + + rate = d.get(currency) + if rate is None: + return f'Неизвестная валюта {currency}' + + cash_remained /= rate[0] + currency_type = d.get(currency)[1] + + if cash_remained > 0: + return ( + f'На сегодня осталось {round(cash_remained, 2)} ' + f'{currency_type}' + ) + elif cash_remained == 0: + return 'Денег нет, держись' + elif cash_remained < 0: + return 'Денег нет, держись:' \ + ' твой долг - {0:.2f} {1}'.format(-cash_remained, + currency_type) + """ + Куча текста мешает восприятию. Я бы заменил на: + ... + if cash_remained > 0: + return ( f'На сегодня осталось {round(cash_remained, 2)} ' f'{currency_type}') + elif cash_remained == 0: + return 'Денег нет, держись' + elif cash_remained < 0: + return 'Денег нет, держись:' \ + ' твой долг - {0:.2f} {1}'.format(-cash_remained, currency_type) + return None + """ + + def get_week_stats(self): + super().get_week_stats() + # return super().get_week_stats() + + +""" +Названия классов Calculator, CaloriesCalculator(Calculator),CashCalculator(Calculator) +делают код менее читаемым из-за длинных и повторяющихся слов. +Я бы назвал Calc, Calories_сalc(Calculator), Cash_calc(Calculator) +""" \ No newline at end of file From 2f7acb6966d2ffd62006fd25b9d0e73795682614 Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Mon, 13 Oct 2025 19:04:06 +0700 Subject: [PATCH 02/10] commit --- main_red.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main_red.py b/main_red.py index 4df6f06..4ca158c 100644 --- a/main_red.py +++ b/main_red.py @@ -94,7 +94,7 @@ def get_today_cash_remained(self, currency, def get_week_stats(self): super().get_week_stats() - # return super().get_week_stats() + """ From 12b6835f827e115716f317c3b5c5787c31727d48 Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Mon, 13 Oct 2025 19:16:57 +0700 Subject: [PATCH 03/10] commit all --- main_red.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main_red.py b/main_red.py index 4ca158c..8e577ea 100644 --- a/main_red.py +++ b/main_red.py @@ -82,7 +82,7 @@ def get_today_cash_remained(self, currency, """ Куча текста мешает восприятию. Я бы заменил на: ... - if cash_remained > 0: + if cash_remained > 0: return ( f'На сегодня осталось {round(cash_remained, 2)} ' f'{currency_type}') elif cash_remained == 0: return 'Денег нет, держись' From e6c52821d548ef539de8223ddd558bc563b3436e Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Mon, 13 Oct 2025 19:23:24 +0700 Subject: [PATCH 04/10] commit --- main_red.py => main2.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename main_red.py => main2.py (100%) diff --git a/main_red.py b/main2.py similarity index 100% rename from main_red.py rename to main2.py From bf4565b73667af1975aaf4ac488665820d105fc1 Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Mon, 13 Oct 2025 19:25:48 +0700 Subject: [PATCH 05/10] commit From 6187b589e8905e21af6008c7d1c41230cd757345 Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Wed, 15 Oct 2025 17:59:55 +0700 Subject: [PATCH 06/10] commit --- main2.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/main2.py b/main2.py index 8e577ea..db6ae87 100644 --- a/main2.py +++ b/main2.py @@ -24,7 +24,6 @@ def __init__(self, amount, comment, date=''): self.date = dt.datetime.now().date() """ - class Calculator: def __init__(self, limit): self.limit = limit @@ -40,7 +39,6 @@ def get_week_stats(self): today = dt.datetime.now().date() return sum([rec.amount for rec in self.records if 7 > (today - rec.date).days >= 0]) - class CaloriesCalculator(Calculator): def get_calories_remained(self): # Получает остаток калорий на сегодня x = self.limit - self.get_today_stats() @@ -50,11 +48,9 @@ def get_calories_remained(self): # Получает остаток калори else: return ('Хватит есть!') - class CashCalculator(Calculator): USD_RATE = float(60) # Курс доллар США. EURO_RATE = float(70) # Курс Евро. - def get_today_cash_remained(self, currency, USD_RATE=USD_RATE, EURO_RATE=EURO_RATE): cash_remained = self.limit - self.get_today_stats() @@ -94,9 +90,7 @@ def get_today_cash_remained(self, currency, def get_week_stats(self): super().get_week_stats() - - - + """ Названия классов Calculator, CaloriesCalculator(Calculator),CashCalculator(Calculator) делают код менее читаемым из-за длинных и повторяющихся слов. From bc8fdb655b24ea187b597dbed7ca26dff4a7e578 Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Wed, 15 Oct 2025 18:04:35 +0700 Subject: [PATCH 07/10] commit --- main2.py => review.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename main2.py => review.py (100%) diff --git a/main2.py b/review.py similarity index 100% rename from main2.py rename to review.py From 8b68e72d8760ebb0d2fd52e4b0c32beb1f9ea0e3 Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Wed, 15 Oct 2025 18:07:04 +0700 Subject: [PATCH 08/10] com --- review.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/review.py b/review.py index db6ae87..d270407 100644 --- a/review.py +++ b/review.py @@ -11,7 +11,7 @@ def __init__(self, amount, comment, date=''): self.comment = comment """ - Ненужные переносы снижают читаемость: + Ненужные переносы снижают восприятие: self.date = ( dt.datetime.now().date() if not date @@ -75,7 +75,7 @@ def get_today_cash_remained(self, currency, return 'Денег нет, держись:' \ ' твой долг - {0:.2f} {1}'.format(-cash_remained, currency_type) - """ + """ Куча текста мешает восприятию. Я бы заменил на: ... if cash_remained > 0: From 317a1d1bd8f5b16f285db42b61a6ff35bd8bd7f5 Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Wed, 15 Oct 2025 18:15:43 +0700 Subject: [PATCH 09/10] commit --- review.py | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 review.py diff --git a/review.py b/review.py new file mode 100644 index 0000000..d270407 --- /dev/null +++ b/review.py @@ -0,0 +1,98 @@ +import datetime as dt + + +class Record: + def __init__(self, amount, comment, date=''): + self.amount = amount + self.date = ( + dt.datetime.now().date() if + not + date else dt.datetime.strptime(date, '%d.%m.%Y').date()) + self.comment = comment + + """ + Ненужные переносы снижают восприятие: + self.date = ( + dt.datetime.now().date() + if not date + else dt.datetime.strptime(date, '%d.%m.%Y').date()) + + Я бы заменил всё на: + if date: + self.date = dt.datetime.strptime(date, '%d.%m.%Y').date() + else: + self.date = dt.datetime.now().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): + return sum([rec.amount for rec in self.records if rec.date == dt.datetime.now().date()]) + + def get_week_stats(self): + today = dt.datetime.now().date() + return sum([rec.amount for rec in self.records if 7 > (today - rec.date).days >= 0]) + +class CaloriesCalculator(Calculator): + def get_calories_remained(self): # Получает остаток калорий на сегодня + x = self.limit - self.get_today_stats() + if x > 0: + return f'Сегодня можно съесть что-нибудь' \ + f' ещё, но с общей калорийностью не более {x} кКал' + else: + return ('Хватит есть!') + +class CashCalculator(Calculator): + USD_RATE = float(60) # Курс доллар США. + EURO_RATE = float(70) # Курс Евро. + def get_today_cash_remained(self, currency, + USD_RATE=USD_RATE, EURO_RATE=EURO_RATE): + cash_remained = self.limit - self.get_today_stats() + + d = {'usd': (USD_RATE, 'USD'), 'eur': (EURO_RATE, 'Euro'), 'rub': (1.0, 'руб')} + + rate = d.get(currency) + if rate is None: + return f'Неизвестная валюта {currency}' + + cash_remained /= rate[0] + currency_type = d.get(currency)[1] + + if cash_remained > 0: + return ( + f'На сегодня осталось {round(cash_remained, 2)} ' + f'{currency_type}' + ) + elif cash_remained == 0: + return 'Денег нет, держись' + elif cash_remained < 0: + return 'Денег нет, держись:' \ + ' твой долг - {0:.2f} {1}'.format(-cash_remained, + currency_type) + """ + Куча текста мешает восприятию. Я бы заменил на: + ... + if cash_remained > 0: + return ( f'На сегодня осталось {round(cash_remained, 2)} ' f'{currency_type}') + elif cash_remained == 0: + return 'Денег нет, держись' + elif cash_remained < 0: + return 'Денег нет, держись:' \ + ' твой долг - {0:.2f} {1}'.format(-cash_remained, currency_type) + return None + """ + + def get_week_stats(self): + super().get_week_stats() + +""" +Названия классов Calculator, CaloriesCalculator(Calculator),CashCalculator(Calculator) +делают код менее читаемым из-за длинных и повторяющихся слов. +Я бы назвал Calc, Calories_сalc(Calculator), Cash_calc(Calculator) +""" \ No newline at end of file From 40a9fe0edcc46ed49ac196b6c1ea6f87ef72312b Mon Sep 17 00:00:00 2001 From: novikov-igor1209 <70642l7054nov@gmail.com> Date: Wed, 15 Oct 2025 18:17:25 +0700 Subject: [PATCH 10/10] commit --- review.py | 1 + 1 file changed, 1 insertion(+) diff --git a/review.py b/review.py index d270407..8a1d224 100644 --- a/review.py +++ b/review.py @@ -75,6 +75,7 @@ def get_today_cash_remained(self, currency, return 'Денег нет, держись:' \ ' твой долг - {0:.2f} {1}'.format(-cash_remained, currency_type) + """ Куча текста мешает восприятию. Я бы заменил на: ...