Найти - Пользователи
Полная версия: Дроби
Начало » Python для новичков » Дроби
1
sanodin
Подскажите как лучше решать примеры с дробями
например простое: одно целое две третьих плюс два целых одна третья
1 1//3+2 1//3
результат нужен в таком же виде как и выражение,например : 6 4//12 шесть целых четыре двенадцатых
такой вид не нужен: 4.xxxxx


smoke853
ну думаю модуль fractions подойдет.
sergeek
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)
sanodin
у меня все равно res=11/3

и Fraction(5,3) + Fraction(2,3) = 7/3

sergeek
надо добавить еще
Fraction.__str__ = repr_with_entier
sanodin
sergeek
надо добавить еще

Вооо…)))
Все получилось…спасибо..
С утра велосипедов наделал , голова болит.
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