Форум сайта python.su
31
Подскажите как лучше решать примеры с дробями
например простое: одно целое две третьих плюс два целых одна третья
1 1//3+2 1//3
результат нужен в таком же виде как и выражение,например : 6 4//12 шесть целых четыре двенадцатых
такой вид не нужен: 4.xxxxx
Офлайн
15
ну думаю модуль fractions подойдет.
Офлайн
43
from fractions import Fraction @property def with_entier(self): return ( self.numerator // self.denominator ,self.numerator % self.denominator ,self.denominator ) @classmethod def from_sep_entier(cls, entier, numerator, denominator): return cls(numerator + entier * denominator, denominator) default_repr = Fraction.__repr__ def repr_with_entier(self): int_part, remainder, denominator = self.with_entier if remainder: return '<{} {}/{}>'.format(int_part, remainder, denominator) else: return default_repr(self) Fraction.__repr__ = repr_with_entier Fraction.__str__ = repr_with_entier Fraction.with_entier = with_entier Fraction.from_sep_entier = from_sep_entier res = Fraction.from_sep_entier(1,1,3) + Fraction.from_sep_entier(2,1,3) res Out[3]: <3 2/3> res.with_entier Out[4]: (3, 2, 3) Fraction(5,3) + Fraction(2,3) Out[5]: <2 1/3> Fraction(2,3) + Fraction(4,3) Out[6]: Fraction(2, 1)
Отредактировано sergeek (Фев. 16, 2013 19:16:41)
Офлайн
31
у меня все равно res=11/3
и Fraction(5,3) + Fraction(2,3) = 7/3
Офлайн
43
надо добавить еще
Fraction.__str__ = repr_with_entier
Офлайн
31
sergeek
надо добавить еще
Офлайн