Обучение Python (72 частью серии)
Сегодня ваш полное руководство по фракциям в Python
Модуль фракций обеспечивает поддержку арифметику рационального количества.
Модуль фракций еще один встроенный модуль в Python. Этот модуль очень полезен, когда мы имеем дело с плавающими числами. Этот модуль преобразует плавающие числа для более понятных фракций.
Выражая цифры как дроби.
Каждое количество можно представить как фракцию. (Ну любой номер с конечными десятичными местами не менее) Иногда преобразуя число в фракции облегчает понимание и легче понять. Это также полезно, когда вам требуется использовать рациональную арифметику над арифметикой с плавающей точкой для различных математических или научных работ.
Мы можем видеть, как использовать этот модуль из примера, показанного ниже.
>>> import fractions as fr # import the fractions module >>> fr.Fraction(1.5) Fraction(3, 2) >>> print(fr.Fraction(1.5)) 3/2 >>> fr.Fraction(1,0) Traceback (most recent call last): File "", line 1, in File "C:\Users\aatma\AppData\Local\Programs\Python\Python39\lib\fractions.py", line 156, in __new__ raise ZeroDivisionError('Fraction(%s, 0)' % numerator) ZeroDivisionError: Fraction(1, 0) >>>
фрагмент Фракция ()
Преобразует плавающий номер в объект фракции. Функция печати автоматически преобразует объект фракции в читаемый формат. Когда знаменатель нулевой, а ZerodivisionError
возвращается
Вот еще один пример, который я скопировал из официальной документации и аннотировал его с комментариями, чтобы сделать его понятно.
>>> from fractions import Fraction # Import the `Fraction` part of the fraction module. # from fractions import * will also work >>> Fraction(16, -10) # make a fraction with numerator 16, denominator 10 and # reduce it to the lowest form Fraction(-8, 5) >>> Fraction(123) # single numbers are represented as over denominator 1 Fraction(123, 1) >>> Fraction() # empty parenthesis indicates zero Fraction(0, 1) >>> Fraction('3/7') # convert from a more readable string to a fraction format Fraction(3, 7) >>> Fraction(' -3/7 ') # whitespaces do not matter Fraction(-3, 7) >>> Fraction('1.414213 \t\n') ''' Convert the floating value into a fraction with denominator as a power of 10 If the \t\n wouldn't have been there, the result would have been as follows >>> fr.Fraction(1.414213) Fraction(6369049139822511, 4503599627370496) ''' Fraction(1414213, 1000000) >>> Fraction('-.125') # -.125 is interpreted as -0.125 Fraction(-1, 8) >>> Fraction('7e-6') # Fraction constructor can take parameters in the exponential form also Fraction(7, 1000000) >>> Fraction(2.25) # convert 2.25 into fractions Fraction(9, 4) >>> Fraction(1.1) ''' Error!!! The fractions module interprets 1.1 as something else. The only way to get around this is to use the decimal module Fraction(2476979795053773, 2251799813685248) >>> from decimal import Decimal #import the decimal module >>> Fraction(Decimal('1.1')) # convert decimal into fraction. Fraction(11, 10)
Работа на фракциях так же, как работает на реальных числах
>>> from fractions import * >>> a=fraction(1.25) #Don't do this mistake of case insensitivity. Traceback (most recent call last): File "", line 1, in NameError: name 'fraction' is not defined >>> a=Fraction(1.25) >>> print(a) 5/4 >>> b=Fraction(1.5) >>> print(b) 3/2 >>> print(a+b) 11/4 >>> a.numerator #return the numerator of the fraction 5 >>> a.denominator # return the denominator of the fraction. 4 >>> a=-a >>> a Fraction(-5, 4) >>> a*b Fraction(-15, 8) >>> a/b Fraction(-5, 6) >>> a-b Fraction(-11, 4) >>> a**b (-2.56724389811345e-16-1.3975424859373686j)
Модуль фракций содержит несколько полезных методов, как показано ниже.
-
as_integer_ratio ()
Это возвращает двух целых чисел двух целых чисел, соотношение которого равно фракции таким образом, что знаменатель положительный.
>>> import fractions as fr >>> a=fr.Fraction(-1.75) >>> print(a) -7/4 >>> fr.as_integer_ratio(a) # don't do this mistake. Traceback (most recent call last): File "", line 1, in AttributeError: module 'fractions' has no attribute 'as_integer_ratio' >>> a.as_integer_ratio() (-7, 4)
-
limit_denominator ()
>>> import fractions as fr >>> b=fr.Fraction(3.141596372) >>> print(b) 7074246125143851/2251799813685248 >>> b.limit_denominator(100) Fraction(311, 99) >>> b.limit_denominator(10) Fraction(22, 7) >>> b.limit_denominator(10000000) Fraction(10390475, 3307387)
- Функционирует раунд фракций. Существуют различные функции для округления фракций, как показано ниже.
>>> import fractions as fr >>> b=fr.Fraction(3.141596372) >>> b.__round__() 3 >>> b.__round__(3) #round upto 3 digits. Fraction(1571, 500) >>> b.__floor__() 3 >>> b.__ceil__() 4
Это все сейчас. Возможно, вы захотите проверить Официальная документация модуля фракций тоже!
Обучение Python (72 частью серии)
Оригинал: “https://dev.to/aatmaj/learning-python-intermediate-course-day-15-complete-guide-to-the-fractions-module-4ki8”