import fractions fractions.Fraction(numerator=0, denominator=1) fractions.Fraction(other_fraction) fractions.Fraction(float) fractions.Fraction(decimal) fractions.Fraction(string)
numerator=0
- числитель,denominator=0
- знаменатель,other_fraction
- рациональное число,float
- вещественное число,decimal
- десятичное число,string
- строка.Fraction()
.Класс Fraction()
модуля fractions
создает рациональное число или как еще его называют - простую дробь.
Первая версия конструктора требует, чтобы числитель и знаменатель были экземплярами numbers.Rational
и возвращает новый экземпляр Fraction()
со значением numerator
/denominator
. Если знаменатель равен 0, он вызывает ошибку ZeroDivisionError
.
Вторая конструктора версия требует, чтобы аргумент other_fraction
является экземпляром numbers.Rational
и возвращает экземпляр Fraction()
с тем же значением.
Следующие две версии конструктора принимают экземпляр типа float
или decimal.Decimal
и возвращают экземпляр Fraction()
с точно таким же значением.
Обратите внимание, что из-за проблем операций с числами float
аргумент для Fraction(1.1)
не совсем равен 11/10
и поэтому Fraction (1.1)
не возвращает Fraction( 11, 10)
как и следовало ожидать. Но метод Fraction.limit_denominator()
частично решает эту проблему.
>>> Fraction(1.1) # Fraction(2476979795053773, 2251799813685248) >>> Fraction(1.1).limit_denominator(1000) # Fraction(11, 10)
Последняя версия конструктора ожидает строку или экземпляр Unicode. Обычная форма для этого экземпляра:
[sign] numerator ['/' denominator]
Где необязательный знак может быть либо '+'
, либо '-'
, а числитель и знаменатель если есть представляют собой строки десятичных цифр. Кроме того, любая строка, представляющая конечное значение и принятая конструктором float
, также принимается конструктором Fraction()
. В любой форме входная строка может также иметь начальные и/или конечные пробелы.
Класс fractions.Fraction()
наследуется от абстрактного базового класса numbers.Rational
и реализует все методы и операции этого класса. Экземпляры Fraction()
являются хешируемыми и должны рассматриваться как неизменяемые объекты. Кроме того, fractions.Fraction()
обладает своими свойствами и методами.
Изменено в Python 3.9: теперь для нормализации числителя и знаменателя используется
math.gcd()
. Функцияmath.gcd()
всегда возвращает типint
. Раньше тип НОД зависел от числителя и знаменателя.Изменено в Python 3.11: при создании экземпляра Fraction из строки теперь разрешено подчеркивание в соответствии с правилами PEP 515.
Изменено в Python 3.11: чтобы удовлетворить проверки экземпляра
typing.SupportsInt
, классfractions.Fraction
теперь реализует__int__
.Изменено в Python 3.12: для строковых входных данных, вокруг косой черты теперь допускается пробел:
Fraction('2 / 3')
.Изменено в Python 3.12: экземпляры
fractions.Fraction
теперь поддерживают форматирование в стилеfloat
с типами представления"e"
,"E"
,"f"
,"F"
,"g"
,"G"
и"%"
.
>>> from fractions import Fraction >>> Fraction(16, -10) Fraction(-8, 5) >>> Fraction(123) Fraction(123, 1) >>> Fraction() Fraction(0, 1) >>> Fraction('3/7') Fraction(3, 7) >>> Fraction(' -3/7 ') Fraction(-3, 7) >>> Fraction('1.414213 \t\n') Fraction(1414213, 1000000) >>> Fraction('-.125') Fraction(-1, 8) >>> Fraction('7e-6') Fraction(7, 1000000) >>> Fraction(2.25) Fraction(9, 4) >>> Fraction(1.1) Fraction(2476979795053773, 2251799813685248) >>> from decimal import Decimal >>> Fraction(Decimal('1.1')) Fraction(11, 10)