Академия Eduson

Модуль «fractions»

 Модуль «fractions» и тип данных «Fraction»

 Верно ли, что тип данных Fraction является неизменяемым?

 Ответ:  да

 Может ли число Fraction быть ключом в словаре?

 Ответ:  да

 Можно ли сравнивать Fraction числа между собой при помощи оператора ==?

 Ответ:  да

 Что выведет следующий код?:

from fractions import *

num = Fraction(7, 71)

if num * 71 == 7:
    print('YES')
else:
    print('NO')

 Ответ:  YES

 Десятичные числа хранятся в списке numbers в виде строк. Дополните приведенный код, чтобы он для каждого десятичного числа вывел его представление в виде обыкновенной дроби в формате: десятичное число = обыкновенная дробь

from fractions import Fraction as F

numbers = ['6.34', '4.08', '3.04', '7.49', '4.45', '5.39', '7.82', '2.76', '0.71', '1.97', '2.54', '3.67', '0.14', '4.29', '1.84', '4.07', '7.26', '9.37', '8.11', '4.30', '7.16', '2.46', '1.27', '0.29', '5.12', '4.02', '6.95', '1.62', '2.26', '0.45', '6.91', '7.39', '0.52', '1.88', '8.38', '0.75', '0.32', '4.81', '3.31', '4.63', '7.84', '2.25', '1.10', '3.35', '2.05', '7.87', '2.40', '1.20', '2.58', '2.46']

for i in numbers:
    print(i, '=', F(i))

 Десятичные числа, разделенные символом пробела, хранятся в строковой переменной s. Дополните приведенный код, чтобы он вывел сумму наибольшего и наименьшего числа в виде обыкновенной дроби.

from fractions import Fraction as F

s = '0.78 4.3 9.6 3.88 7.08 5.88 0.23 4.65 2.79 0.90 4.23 2.15 3.24 8.57 0.10 8.57 1.49 5.64 3.63 8.36 1.56 6.67 1.46 5.26 4.83 7.13 1.22 1.02 7.82 9.97 5.40 9.79 9.82 2.78 2.96 0.07 1.72 7.24 7.84 9.23 1.71 6.24 5.78 5.37 0.03 9.60 8.86 2.73 5.83 6.50 0.123 0.00021'

ls = s.split()

mx = max(ls)
mn = min(ls)

print(F(mx) + F(mn))

 Даны два натуральных числа m и n. Напишите программу, которая сокращает дробь m/n​ и выводит ее.

from fractions import Fraction as F

m = int(input())
n = int(input())

print(F(m, n))

 Даны две дроби в формате a/b. Напишите программу, которая вычисляет и выводит их сумму, разность, произведение и частное.

from fractions import Fraction as F

m = input()
n = input()

print(m, '+', n, '=', F(m) + F(n))
print(f'{m} - {n} = {F(m) - F(n)}')
print(m, '*', n, '=', F(m) * F(n))
print(m, '/', n, '=', F(m) / F(n))

 На вход программе подается натуральное число n. Напишите программу, которая вычисляет и выводит рациональное число, равное значению выражения.

from fractions import Fraction as F

n = int(input())

m = 0

for i in range(1, n + 1):
    m += 1 / F(i) ** 2

print(m)

 На вход программе подается натуральное число n. Напишите программу, которая вычисляет и выводит рациональное число, равное значению выражения​.

from fractions import Fraction as F
from math import factorial

n = int(input())

m = 0

for i in range(1, n + 1):
    m += 1 / F(factorial(i))

print(m)

 Дима учится в седьмом классе и сейчас они проходят обыкновенные дроби с натуральными числителем и знаменателем. Вчера на уроке математики Дима узнал, что дробь называется правильной, если ее числитель меньше знаменателя, и несократимой, если нет равной ей дроби с меньшими натуральными числителем и знаменателем.
 Дима очень любит математику, поэтому дома он долго экспериментировал, придумывая и решая разные задачки с правильными несократимыми дробями. Одну из этих задач Дима предлагает решить вам с помощью компьютера.
 На вход программе подается натуральное число n. Напишите программу, которая находит наибольшую правильную несократимую дробь с суммой числителя и знаменателя равной n.

from fractions import Fraction as F

n = int(input())

ls = []

for i in range(1, n + 1):
    for j in range(i +1, n + 1):
        if F(i, j).numerator + F(i, j).denominator == n:
            ls.append(F(i, j))

print(max(ls))

 На вход программе подается натуральное число n. Напишите программу, которая выводит в порядке возрастания все несократимые дроби, заключённые между 0 и 1, знаменатель которых не превосходит n.

from fractions import Fraction as F
from math import *
n = int(input())

ls = []

for i in range(1, n + 1):
    for j in range(i + 1, n + 1):
        if gcd(i, j) == 1:
            ls.append(F(i, j))

print(*sorted(ls), sep='\n')