Решение модуля 13.2 Поколение Python: для продвинутых

Модуль 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. Напишите программу, которая вычисляет и выводит рациональное число, равное значению выражения 

Решение модуля 13.2 Поколение Python: для продвинутых

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. Напишите программу, которая вычисляет и выводит рациональное число, равное значению выражения 

Решение модуля 13.2 Поколение Python: для продвинутых

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')

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector