Модуль 13.2 (Модуль fractions) курса «Поколение Python: курс для продвинутых» курс расскажет о:
- Модуль
fractions
- Тип данных
Fraction
Публикуем решения на урок 13.2 Модуль fractions.
Верно ли, что тип данных
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 num in numbers:
print(f"{num} = {F(num)}")
Десятичные числа разделенные символом пробела хранятся в строковой переменной
s
. Дополните приведенный код, чтобы он вывел сумму наибольшего и наименьшего числа в виде обыкновенной дроби.
from fractions import Fraction
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'
s = str(s).split()
print(Fraction(min(s))+ Fraction(max(s)))
Даны два натуральных числа m и n. Напишите программу, которая сокращает дробь m/n и выводит ее.
from fractions import Fraction
a = int(input())
b = int(input())
print(Fraction(a, b))
Даны две дроби в формате
a/b
. Напишите программу, которая вычисляет и выводит их сумму, разность, произведение и частное.
from fractions import Fraction as F
a = input()
b = input()
print(a, '+', b, '=', F(a)+F(b))
print(a, '-', b, '=', F(a)-F(b))
print(a, '*', b, '=', F(a)*F(b))
print(a, '/', b, '=', F(a)/F(b))
На вход программе подается натуральное число nn. Напишите программу, которая вычисляет и выводит рациональное число, равное значению выражения
from fractions import Fraction
n = int(input())
p = 0
for i in range(1, n + 1):
a = Fraction(1, i) ** 2
p += a
print(Fraction(p))
На вход программе подается натуральное число nn. Напишите программу, которая вычисляет и выводит рациональное число, равное значению выражения
from fractions import Fraction as F
def fact(n):
res = 1
for i in range(1,n+1): res*=i
return res
n = int(input())
print(sum([F(1,fact(i)) for i in range(1,n+1)]))
Дима учится в седьмом классе и сейчас они проходят обыкновенные дроби с натуральными числителем и знаменателем. Вчера на уроке математики Дима узнал, что дробь называется правильной, если ее числитель меньше знаменателя, и несократимой, если нет равной ей дроби с меньшими натуральными числителем и знаменателем.
Дима очень любит математику, поэтому дома он долго экспериментировал, придумывая и решая разные задачки с правильными несократимыми дробями. Одну из этих задач Дима предлагает решить вам с помощью компьютера.
На вход программе подается натуральное число n. Напишите программу, которая находит наибольшую правильную несократимую дробь с суммой числителя и знаменателя равной n.
from fractions import Fraction
from math import gcd
n = int(input())
for i in range((n-1)//2, 0, -1):
if gcd(i, n-i) == 1:
print(Fraction(i, n-i))
break
На вход программе подается натуральное число n. Напишите программу, которая выводит в порядке возрастания все несократимые дроби, заключённые между 0 и 1, знаменатель которых не превосходит n.
from math import gcd
from fractions import Fraction
n = int(input())
result = []
while n != 1:
for i in range(1, n):
if gcd(i, n) == 1:
result.append(f'{i}/{n}')
n -= 1
answer = sorted(map(Fraction, result))
print(*answer, sep='\n')
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы