Модуль 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 называется количество различных сочетаний из n по 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)
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы