Главная страница

книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python


Скачать 2.24 Mb.
НазваниеСборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Анкоркнига заданий пайтон
Дата02.10.2022
Размер2.24 Mb.
Формат файлаdocx
Имя файлакнига практических заданий, pyton.docx
ТипСборник упражнений
#709959
страница60 из 69
1   ...   56   57   58   59   60   61   62   63   ...   69

Упражнение 107. Максимальное сокращение дробей


##

# Максимальное сокращение дробей

#

## Вычислить наибольший общий делитель для двух целых чисел

# @param n – первое число (должно быть ненулевым)

# @param m – второе число (должно быть ненулевым) # @return наибольший общий делитель двух целых чисел def gcd(n, m): # Инициализируем d как меньшее значение из n и m d = min(n, m) # Используем цикл while для поиска наибольшего общего делителя n и m while n % d != 0 or m % d != 0:

d = d – 1 return d

Для достижения цели функция gcd использует цикл. Также существует простой и элегантный способ определения наибольшего общего делителя двух чисел при помощи рекурсии. Эта концепция будет описана в упражнении 174.

## Сокращаем дробь до предела

# @param num – числитель дроби

# @param den – знаменатель дроби (должен быть ненулевым) # @return числитель и знаменатель сокращенной дроби def reduce(num, den): # Если числитель равен нулю, сокращенная дробь будет равна 0/1 if num == 0:

return (0, 1)

# Находим наибольший общий делитель числителя и знаменателя g = gcd(num, den)

# Делим числитель и знаменатель на НОД и возвращаем результат return (num // g, den // g)

В функции reduce мы использовали оператор //, чтобы вернуть целочисленные значения числителя и знаменателя.

# Запрашиваем дробь у пользователя и отображаем ее максимально сокращенный вариант def main(): # Запрашиваем числитель и знаменатель у пользователя num = int(input("Введите числитель дроби: ")) den = int(input("Введите знаменатель дроби: "))

# Вычисляем сокращенную дробь

(n, d) = reduce(num, den)

# Выводим результат print("Дробь %d/%d может быть сокращена до %d/%d." % (num, den, n, d))

# Вызов основной функции main()

Упражнение 108. Переводим меры


##

# Преобразуем меры объема ингредиентов в рецептах с целью их более лаконичного

# выражения

# Например, 59 чайных ложек можно сократить до 1 стакана, 3 столовых ложек # и 2 чайных ложек.

#

TSP_PER_TBSP = 3

TSP_PER_CUP = 48

##

# Преобразуем меры объема ингредиентов в рецептах с целью их более лаконичного

# выражения

# @param num – количество единиц объема для преобразования

# @param unit – единица измерения (''cup'', ''tablespoon'' или ''teaspoon'') # @return строка, представляющая меры в сокращенной форме def reduceMeasure(num, unit): # Приводим единицу измерения к нижнему регистру unit = unit.lower()

Единицы измерения приводятся к нижнему регистру путем вызова метода lower и сохранения результата в ту же переменную. Это позволит пользователю вводить меру в любом регистре.

# Вычислим объем в чайных ложках if unit == "teaspoon" or unit == "teaspoons":

teaspoons = num elif unit == "tablespoon" or unit == "tablespoons":

teaspoons = num * TSP_PER_TBSP elif unit == "cup" or unit == "cups": teaspoons = num * TSP_PER_CUP

# Преобразуем объем в чайных ложках в другие единицы измерения cups = teaspoons // TSP_PER_CUP teaspoons = teaspoons – cups * TSP_PER_CUP tablespoons = teaspoons // TSP_PER_TBSP teaspoons = teaspoons – tablespoons * TSP_PER_TBSP

# Создаем строковую переменную для хранения результата result = ""

# Добавляем количество стаканов к результату (если надо) if cups > 0:

result = result + str(cups) + " cup" # Множественное число if cups > 1: result = result + "s"

# Добавляем количество столовых ложек к результату (если надо) if tablespoons > 0: # Добавляем запятую, если нужно if result != "": result = result + ", "

result = result + str(tablespoons) + " tablespoon" # Множественное число if tablespoons > 1: result = result + "s"

# Добавляем количество чайных ложек к результату (если надо) if teaspoons > 0: # Добавляем запятую, если нужно if result != "":

result = result + ", " result = result + str(teaspoons) + " teaspoon" # Множественное число if teaspoons > 1:

result = result + "s"

# Обрабатываем ноль if result == "": result = "0 teaspoons" return result

В эту программу мы включили сразу несколько вызовов функции для охвата большого числа разнообразных мер.

# Демонстрируем работу функции reduceMeasure путем нескольких обращений def main():

print("59 teaspoons is %s." % reduceMeasure(59, "teaspoons")) print("59 tablespoons is %s." % \ reduceMeasure(59, "tablespoons")) print("1 teaspoon is %s." % reduceMeasure(1, "teaspoon")) print("1 tablespoon is %s." % reduceMeasure(1, "tablespoon")) print("1 cup is %s." % reduceMeasure(1, "cup")) print("4 cups is %s." % reduceMeasure(4, "cups")) print("3 teaspoons is %s." % reduceMeasure(3, "teaspoons")) print("6 teaspoons is %s." % reduceMeasure(6, "teaspoons")) print("95 teaspoons is %s." % reduceMeasure(95, "teaspoons")) print("96 teaspoons is %s." % reduceMeasure(96, "teaspoons")) print("97 teaspoons is %s." % reduceMeasure(97, "teaspoons")) print("98 teaspoons is %s." % reduceMeasure(98, "teaspoons")) print("99 teaspoons is %s." % reduceMeasure(99, "teaspoons"))

# Вызов основной функции main()
1   ...   56   57   58   59   60   61   62   63   ...   69


написать администратору сайта