Решение модуля 1.3 Python: основы и применение

Модуль 1.3 Функции и стек вызовов

Что будет выведено на экран в результате исполнения данного кода?

a = []

def foo(arg1, arg2):
  a.append("foo")

foo(a.append("arg1"), a.append("arg2"))

print(a)
['arg1', 'arg2', 'foo']

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

Чему равен максимальный размер стека в процессе выполнения следующего кода?
Обратите внимание, что при интерпретации кода на стеке находится функция module, которую также нужно учесть при подсчете размера стека.
В рамках данного задания можно считать, что функция print не вызывает дополнительных функций внутри себя.

def h():
  print(12)

def f():
  g(h)

def g(a):
  a()

g(f)
6

Напишите реализацию функции closest_mod_5, принимающую в качестве единственного аргумента целое число x и возвращающую самое маленькое целое число y, такое что:

  • y больше или равно x
  • y делится нацело на 5

Формат того, что ожидается от вас в качестве ответа:

def closest_mod_5(x):
    if x % 5 == 0:
        return x
    return "I don't know :("

Описание
Данная функция closest_mod_5(x) принимает целое число x в качестве аргумента и возвращает такое минимальное целое число y, которое либо равно x, либо является ближайшим большим числом, делящимся нацело на 5.
Сначала функция проверяет, делится ли x нацело на 5, с использованием условия if x % 5 == 0. Если это условие выполняется (т.е., x уже делится нацело на 5), то функция возвращает само x, так как оно уже удовлетворяет условиям задачи.
Если x не делится нацело на 5, функция использует арифметическую операцию, чтобы найти ближайшее большее число, которое делится нацело на 5. Конструкция x + (5 - x % 5) вычисляет разницу между x и ближайшим числом, делящимся нацело на 5, и прибавляет эту разницу к x. Таким образом, возвращается минимальное число, удовлетворяющее условиям задачи.
def closest_mod_5(x):
    if x % 5 == 0:
        # Если x уже делится нацело на 5, возвращаем x
        return x
    else:
        # Иначе, находим ближайшее большее число, которое делится нацело на 5
        return x + (5 - x % 5)

Дана функция s:

def s(a, *vs, b=10):
   res = a + b
   for v in vs:
       res += v
   return res

В результате каких вызовов данная функция вернет число 31?

s(11, 10, b=10)
s(5, 5, 5, 5, 1)
s(11, b=20)
s(11, 10)
s(21)

Сочетанием из n элементов по k называется подмножество этих n элементов размера k.
Два сочетания называются различными, если одно из сочетаний содержит элемент, который не содержит другое.
Числом сочетаний из n по k называется количество различных сочетаний из по k. Обозначим это число за C(n, k).

Описание
Это решение представляет вычисления числа сочетаний C(n, k) с использованием рекурсивной формулы. Давайте разберем, как она работает:
Функция calculate_combinations(n, k):
Принимает два аргумента, n и k, представляющие числа для вычисления сочетаний.
Проверяет базовые случаи: если k равно 0 или равно n, возвращается 1, так как есть только один способ выбрать 0 элементов или n элементов из множества.
В противном случае, функция использует рекуррентную формулу C(n, k) = C(n — 1, k) + C(n — 1, k — 1) для вычисления числа сочетаний.
Считывание входных данных:
Использует input().split() для считывания строки, содержащей два целых числа n и k.
Преобразует считанные значения в целые числа с помощью map(int, ...).
Присваивает значения переменным n и k.
Вычисление и вывод результата:
Вызывает функцию calculate_combinations с аргументами n и k.
Результат сохраняется в переменной result.
Выводит результат на экран с помощью print(result).
Таким образом, программа рекурсивно вычисляет число сочетаний C(n, k) и выводит результат в соответствии с введенными значениями n и k.
# Функция для вычисления числа сочетаний C(n, k)
def calculate_combinations(n, k):
    if k == 0 or k == n:
        return 1
    else:
        return calculate_combinations(n - 1, k) + calculate_combinations(n - 1, k - 1)

# Считывание входных данных
n, k = map(int, input().split())

# Вычисление и вывод результата
result = calculate_combinations(n, k)
print(result)

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x