ChatCrawlerпоиск по публичному Telegram Открыть приложение
О

Основы Python

сообщение · 2025-09-29 06:31 UTC
+
Ответсообщение недоступно
Не знаю в чем именно проблема у вас с 15ым тестом. но благодаря вашему комментарию тоже обвешал декораторами свой класс стало гораздо короче, спасибо. Тесты прошло. from functools import total_ordering def arguments_to_fraction(func): def wrapper(*args): norm_args = [] for arg in args: if type(arg) is not Fraction: norm_args.append(Fraction(arg)) else: norm_args.append(arg) return func(*norm_args) return wrapper @total_ordering class Fraction: def __init__(self, a, b=None): if b is None: b = 1 if isinstance(a, str) and ('/' in a): a, b = map(int, [_ for _ in a.split('/')]) else: a = int(a) self.__a, self.__b = a, b self.__gcd() def __gcd(self): nod_a, nod_b = self.__a, self.__b while nod_b != 0: nod_a, nod_b = nod_b, nod_a % nod_b self.__a //= nod_a self.__b //= nod_a def numerator(self, number=None): if number is None: return abs(self.__a) self.__a = number * (self.__a // abs(self.__a)) self.__gcd() def denominator(self, number=None): if number is None: return abs(self.__b) self.__b = number * (self.__b // abs(self.__b)) self.__gcd() def reverse(self): self.__a, self.__b = self.__b, self.__a return self def __str__(self): if self.__b > 0: return f"{self.__a}/{self.__b}" else: return f"{-self.__a}/{-self.__b}" def __repr__(self): if self.__b > 0: return f"Fraction(\'{self.__a}/{self.__b}\')" else: return f"Fraction(\'{-self.__a}/{-self.__b}\')" @arguments_to_fraction def __neg__(self): return Fraction(-self.__a, self.__b) @arguments_to_fraction def __add__(self, other): return Fraction(self.__a * other.__b + other.__a * self.__b, self.__b * other.__b) def __sub__(self, other): return self.__add__(other.__neg__()) def __iadd__(self, other): self.__a, self.__b = self.__a * other.__b + other.__a * self.__b, self.__b * other.__b self.__gcd() return self def __isub__(self, other): self.__a, self.__b = self.__a * other.__b - other.__a * self.__b, self.__b * other.__b self.__gcd() return self def __mul__(self, other): return Fraction(self.__a * other.__a, self.__b * other.__b) def __truediv__(self, other): return Fraction(self.__a * other.__b, self.__b * other.__a) def __imul__(self, other): self.__a, self.__b = self.__a * other.__a, self.__b * other.__b self.__gcd() return self def __itruediv__(self, other): self.__a, self.__b = self.__a * other.__b, self.__b * other.__a self.__gcd() return self @arguments_to_fraction def __lt__(self, other): left = self.__a * self.__b // abs(self.__b) * abs(other.__b) right = other.__a * other.__b // abs(other.__b) * abs(self.__b) return left < right @arguments_to_fraction def __eq__(self, other): return str(self) == str(other)

Вся лента · оригинал в Telegram

Открыть в Telegram Каталог площадок Искать в ChatCrawler

Слепок открытой публичной ленты из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог