Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 16, 2013 09:02:53

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Дроби

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


Офлайн

#2 Фев. 16, 2013 09:42:14

smoke853
Зарегистрирован: 2012-10-02
Сообщения: 123
Репутация: +  15  -
Профиль   Отправить e-mail  

Дроби

ну думаю модуль fractions подойдет.

Офлайн

#3 Фев. 16, 2013 17:20:52

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Дроби

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)

Офлайн

#4 Фев. 16, 2013 19:07:16

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Дроби

у меня все равно res=11/3

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

Офлайн

#5 Фев. 16, 2013 19:15:31

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Дроби

надо добавить еще

Fraction.__str__ = repr_with_entier

Офлайн

#6 Фев. 16, 2013 19:22:34

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Дроби

sergeek
надо добавить еще

Вооо…)))
Все получилось…спасибо..
С утра велосипедов наделал , голова болит.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version