Найти в Дзене
1001 строк кода

Готовимся к собедованию Python. Вопросы 61 - 70

Вопрос 61.
Что произойдет при добавлении нового узла со значением 25 в бинарное дерево поиска (BST), представленное на изображении ниже? Вопрос 62.
Как функция enumerate() улучшает функциональность цикла в Python при работе со списком? Вопрос 63.
Что такое функциональный паттерн проектирования "Map" (отображение) и как он используется в Python? Приведите пример использования этого паттерна для преобразования элементов коллекции. Вопрос 64. Какой результат выведет на экран следующий код Python? Вопрос 65.
Какой будет результат выполнения следующего кода? Вопрос 66.
Какой тип данных был бы наиболее подходящим для хранения уникальных идентификаторов пользователей (user IDs) в Python? Вопрос 67.
В Python, каков результат преобразования типов, если вы используете функцию int() для числа с плавающей точкой, такого как 7.7? Вопрос 67.
Дан массив целых чисел nums, содержащий n элементов, и целое число k. Разработайте алгоритм для поиска непрерывного подмассива (subarray) длины k в массиве nums
Оглавление

Вопросы

Вопрос 61.
Что произойдет при добавлении нового узла со значением 25 в бинарное дерево поиска (BST), представленное на изображении ниже?

-2
  • A. Узел 25 будет добавлен как левый потомок узла 40.
  • B. Узел 25 будет добавлен как правый потомок узла 20.
  • C. Узел 25 будет добавлен как правый потомок узла 40.
  • D. Узел 25 не будет добавлен, так как такой узел уже существует в дереве.

Вопрос 62.
Как функция enumerate() улучшает функциональность цикла в Python при работе со списком?

  • A. Она переворачивает список для перебора в обратном порядке.
  • B. Функция добавляет счетчик к каждой итерации цикла, предоставляя текущую позицию индекса наряду со значением.
  • C. Она умножает каждый элемент на его номер индекса для получения нового списка.
  • D. Enumerate блокирует список для предотвращения изменений во время итерации.

Вопрос 63.
Что такое функциональный паттерн проектирования "Map" (отображение) и как он используется в Python? Приведите пример использования этого паттерна для преобразования элементов коллекции.

  • A. Паттерн "Map" - это способ сортировки элементов в коллекции, используя заданную функцию.
  • B. Паттерн "Map" - это способ фильтрации элементов в коллекции, используя заданное условие.
  • C. Паттерн "Map" - это способ объединения элементов коллекции в одно значение, используя заданную функцию.
  • D. Паттерн "Map" - это способ применения функции к каждому элементу коллекции и создания новой коллекции из полученных результатов.

Вопрос 64. Какой результат выведет на экран следующий код Python?

-3
  • A. 7
  • B. 6
  • C. 5
  • D. 4

Вопрос 65.
Какой будет результат выполнения следующего кода?

-4
  • A. [1, 2, 3] [1, 2, 3, 4, 5]
  • B. [1, 2, 3, 4] [1, 2, 3, 4, 5]
  • C. [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
  • D. [1, 2, 3] [1, 2, 3, 5]

Вопрос 66.
Какой тип данных был бы наиболее подходящим для хранения уникальных идентификаторов пользователей (user IDs) в Python?

  • A. Список (List)
  • B. Словарь (Dictionary)
  • C. Множество (Set)
  • D. Кортеж (Tuple)

Вопрос 67.
В Python, каков результат преобразования типов, если вы используете функцию int() для числа с плавающей точкой, такого как 7.7?

  • A. Она округляет число до ближайшего целого числа.
  • B. Она отбрасывает десятичную часть и возвращает целое число.
  • C. Она возвращает ближайшее меньшее целое число, если десятичная дробь ниже .5, и верхнее, если выше.
  • D. Это вызывает ValueError, если явно не обработано исключение.

Вопрос 67.
Дан массив целых чисел nums, содержащий n элементов, и целое число k. Разработайте алгоритм для поиска непрерывного подмассива (subarray) длины k в массиве nums, который имеет максимальное среднее значение. Возвратите это максимальное среднее значение.

Примеры:

Ввод: nums = [1,12,-5,-6,50,3], k = 4
Вывод: 12.75000

Ввод: nums = [5], k = 1
Вывод: 5.00000

  • A. Для решения задачи нужно использовать жадный алгоритм и выбирать на каждом шаге самый большой элемент из списка.
  • B. Для решения задачи нужно использовать алгоритм поиска в ширину (BFS).
  • C. Для решения задачи нужно использовать метод "скользящего окна" для эффективного поиска максимального среднего.
  • D. Для решения задачи, необходимо использовать рекурсивный обход всех вариантов.

Вопрос 69.
Что такое "Immutability" (иммутабельность) в контексте функционального программирования, и какие преимущества она предоставляет? Приведите примеры изменяемых и неизменяемых объектов в Python и объясните, как использование иммутабельности может упростить код.

  • A. Иммутабельность - это концепция, которая означает, что объекты можно изменять только в одном месте, при их создании, но не после.
  • B. Иммутабельность - это использование объектов только для чтения.
  • C. Иммутабельность - это концепция, которая заключается в избегании изменяемых данных и использовании только неизменяемых, что упрощает код и уменьшает вероятность побочных эффектов.
  • D. Иммутабельность - это паттерн проектирования для создания только одного объекта определенного типа, без возможности изменения его состояния.

Вопрос 70.
Что такое композиция функций, и как ее можно реализовать в Python? Приведите пример кода, демонстрирующий композицию функций, где результат одной функции передается в качестве аргумента другой.

  • A. Композиция функций - это процесс создания объектов из классов, использующих значения, полученные из других объектов.
  • B. Композиция функций - это процесс, когда функция вызывает себя несколько раз.
  • C. Композиция функций - это комбинация двух или более функций, при которой результат выполнения одной функции передается в качестве аргумента другой функции.
  • D. Композиция функций - это способ создания функций, которые могут выполняться в отдельных потоках.

Ответы

61. Правильный ответ: B

Объяснение:

Бинарное дерево поиска (BST, Binary Search Tree) - это древовидная структура данных, где для каждого узла выполняются следующие свойства:

  • Значение всех узлов в левом поддереве меньше значения узла.
  • Значение всех узлов в правом поддереве больше значения узла.
  • Оба левое и правое поддерево тоже являются BST.

При добавлении нового узла в BST, алгоритм должен соблюдать эти свойства для обеспечения корректности бинарного дерева.

  • Процесс добавления узла со значением 25:
    Начало с корня:
    Начинаем поиск места для добавления нового узла с корня (30).
    Сравнение с корнем: Так как 25 меньше 30, переходим в левое поддерево.
    Сравнение с узлом 20: Так как 25 больше 20, то переходим в правое поддерево от узла 20.
    Правый потомок 20: Узел 20 не имеет правого потомка, поэтому узел со значением 25 будет добавлен как правый потомок узла 20.

Разбор вариантов:

  • A. Узел 25 будет добавлен как левый потомок узла 40.: Неправильно, так как 25 меньше 40.
  • B. Узел 25 будет добавлен как правый потомок узла 20.: Правильно.
  • C. Узел 25 будет добавлен как правый потомок узла 40.: Неправильно.
  • D. Узел 25 не будет добавлен, так как такой узел уже существует в дереве.: Неправильно. В данном случае узла 25 нет, так как это дерево поиска и одинаковых элементов не может быть.

В результате:

  • При добавлении нового узла в BST необходимо соблюдать свойства бинарного дерева поиска.
  • Правильная вставка узлов обеспечивает возможность быстрого поиска в BST.

Таким образом, правильным ответом является B. Узел 25 будет добавлен как правый потомок узла 20.

62. Правильный ответ: B

Объяснение:

Функция enumerate() в Python предназначена для упрощения итерации по последовательности (например, списку) с одновременным доступом к индексу и значению каждого элемента.

  • Вариант A не верен: enumerate() не переворачивает список. Для этого используется метод reverse().
  • Вариант B верен: enumerate() добавляет счетчик (индекс) к каждому элементу, предоставляя кортеж (индекс, значение) на каждой итерации.
  • Вариант C не верен: enumerate() не меняет значения элементов и не создает новый список.
  • Вариант D не верен: enumerate() не блокирует список и не предотвращает изменения во время итерации.

Как работает enumerate():

  1. Функция enumerate() принимает в качестве аргумента итерируемый объект (список, кортеж, строку и т. д.).
  2. Она возвращает объект-итератор, который выдаёт кортежи, состоящие из двух элементов: индекса и значения элемента.
  3. Индексы начинаются с 0 по умолчанию, но можно изменить стартовый индекс, передав необязательный параметр start.

Преимущества использования enumerate():

  • Доступ к индексу: Упрощает доступ к индексу элемента в цикле, что полезно, когда нужно обрабатывать элемент, зная его положение.
  • Упрощение кода: Позволяет избежать ручного создания и отслеживания счетчика, делая код более читабельным.
  • Эффективность: enumerate часто более эффективен, чем ручное отслеживание индекса, поскольку Python автоматически оптимизирует этот процесс.

Пример:

-5

В результате:

  • При использовании enumerate(), цикл автоматически предоставляет индекс и значение каждого элемента списка.
  • При использовании enumerate(my_list, start=1) индексы начинаются с 1.

Таким образом, вариант B является правильным ответом.

63. Правильный ответ: D

Объяснение:

Паттерн "Map" (отображение) — это распространенный функциональный паттерн, который применяется для преобразования каждого элемента в коллекции (например, список, кортеж) в новый элемент с использованием определенной функции. Результатом является новая коллекция, содержащая преобразованные элементы.

  • Основные концепции паттерна "Map":
    Применение функции:
    Функция "отображения" применяется к каждому элементу входной коллекции.
    Новая коллекция: Результаты применения функции сохраняются в новой коллекции.
    Сохранение порядка: Обычно сохраняется порядок элементов (если это применимо к структуре данных).
    Использование с функциями высшего порядка: Часто реализуется с помощью функций высшего порядка, таких как map() в Python.
  • Как работает паттерн "Map":
    Принимает входную коллекцию элементов.
    Принимает функцию преобразования.
    Применяет функцию к каждому элементу коллекции.
    Собирает результаты преобразования в новую коллекцию.
    Возвращает новую коллекцию с преобразованными значениями.

Примеры:

-6

Разбор примеров:

  1. Использование с обычной функцией square:
    Функция square(x) возводит число в квадрат.
    Функция map(square, numbers) применяет функцию square к каждому элементу списка numbers и возвращает итератор. Затем итератор преобразовывается в список.
    Выводит исходный и новый списки.
  2. Использование с лямбда функцией:
    Лямбда-функция lambda x: x ** 3 вычисляет куб числа.
    Функция map(lambda x: x ** 3, numbers) применяет лямбду к каждому элементу списка numbers и возвращает итератор. Затем итератор преобразовывается в список.
    Выводит исходный и новый списки.
  3. Использование map с преобразованием строк:
    Лямбда-функция lambda x: x.upper() переводит строку в верхний регистр.
    Функция map(lambda x: x.upper(), strings) применяет лямбда-функцию к каждой строке в списке strings.
    Выводит исходный и новый списки.
  4. Использование map с несколькими коллекциями:
    Лямбда-функция lambda x,y: x+y суммирует два числа.
    Функция map(lambda x,y: x+y, list1, list2) применяет лямбда-функцию к каждому элементу в списках list1 и list2 (берет элементы с одинаковым индексом).
    Выводит исходные списки и список сумм.
  5. Использование map c функцией, которая возвращает кортеж:
    Лямбда функция lambda s, i: (i, s) создает пару (индекс, значение) для каждой строки в списке.
    функция map создает список кортежей.
    Выводит исходный список и список с проиндексированными строками.
  6. Использование map с различными типами данных:
    Лямбда функция lambda x: type(x) возвращает тип объекта.
    Функция map применяет эту функцию к каждому элементу в списке, что приводит к созданию списка типов.
    Выводит исходный список и список типов.

Разбор вариантов:

  • A. Паттерн "Map" - это способ сортировки элементов в коллекции, используя заданную функцию.: Неправильно. Сортировка - это другая операция.
  • B. Паттерн "Map" - это способ фильтрации элементов в коллекции, используя заданное условие.: Неправильно. Фильтрация используется для выборки элементов по условию.
  • C. Паттерн "Map" - это способ объединения элементов коллекции в одно значение, используя заданную функцию.: Неправильно. Это описание паттерна Reduce.
  • D. Паттерн "Map" - это способ применения функции к каждому элементу коллекции и создания новой коллекции из полученных результатов.: Правильно.

В результате:

  • Паттерн "Map" позволяет создавать новый список путем преобразования элементов исходного списка с помощью функции преобразования.
  • Используя функцию map и лямбда-функции можно легко реализовать паттерн Map.
  • Функция map позволяет применять функцию к нескольким спискам одновременно.
  • Функция map может использоваться с функциями, которые возвращают любое значение (в том числе и кортежи), и может принимать любые типы данных.

Таким образом, правильным ответом является D. Паттерн "Map" - это способ применения функции к каждому элементу коллекции и создания новой коллекции из полученных результатов.

64. Правильный ответ: B

Объяснение:

Этот код демонстрирует работу замыканий (closures) и областей видимости переменных в Python.

  1. Функция outer_func(y):
    Принимает аргумент y (в примере равен 3).
    Инициализирует локальную переменную x значением 2.
    Определяет вложенную функцию inner_func().
    inner_func() "замыкается" над переменными из области видимости outer_func и возвращает сумму x + y.
    Изменяет x на x + 2, то есть x теперь равен 4.
    Изменяет y на 2.
    Возвращает функцию inner_func как результат.
  2. Вызов outer_func(3):
    Вызывает outer_func с аргументом 3.
    Возвращаемая функция inner_func присваивается переменной results.
    Важно отметить, что вложенная функция inner_func запоминает не значения переменных x и y в момент определения, а сами переменные, и они подставятся в момент вызова inner_func.
  3. Вызов results():
    Вызывает функцию inner_func, которая была возвращена из outer_func и присвоена results.
    Внутри inner_func:
    x имеет значение 4, которое было вычислено в outer_func перед ее возвращением.
    y имеет значение 2, которое было присвоено в outer_func перед ее возвращением.
    Возвращается значение x + y = 4 + 2 = 6.
  4. Вывод: print(results()) выводит результат вызова inner_func ,то есть 6.

Разбор вариантов:

  • A. 7: Неправильно.
  • B. 6: Правильно.
  • C. 5: Неправильно.
  • D. 4: Неправильно.

В результате:

  • Вложенные функции могут захватывать переменные из области видимости родительской функции - это называется замыканием.
  • Захват переменной происходит по ссылке, а не по значению. В момент вызова inner_func переменные x и y будут иметь последнее присвоенное значение.

Таким образом, правильным ответом является B. 6.

65. Правильный ответ: B

Объяснение:

Этот код демонстрирует разницу между мутированием списка и созданием нового списка, а также то, как это влияет на переменные в Python.

  1. Изначальный список: my_list инициализируется как [1, 2, 3].
  2. Функция modify_list:
    Принимает список lst в качестве аргумента.
    lst.append(4): Метод append
    мутирует список, добавляя 4 в конец. Теперь lst (изначально my_list) стал [1, 2, 3, 4].
    lst = lst + [5]: Операция + создает
    новый список, объединяя lst c [5]. Результат присваивается локальной переменной lst внутри функции. Это не изменяет my_list в глобальной области видимости.
    Возвращается
    новый список lst.
  3. Вызов modify_list: Функция вызывается с my_list как аргументом. Возвращаемый новый список присваивается переменной new_list.
  4. Вывод:
    print(my_list) выведет [1, 2, 3, 4], так как my_list был мутирован внутри функции.
    print(new_list) выведет [1, 2, 3, 4, 5], который является новым списком, созданным в функции и возвращенным.

Дополнительные замечания:

  • Метод append изменяет исходный список (мутирует его).
  • Оператор + создает новый список, не изменяя исходные.
  • Присваивание внутри функции создает локальную переменную, которая никак не влияет на переменную с тем же именем, объявленную за пределами этой функции.
  • Понимание разницы между мутацией и созданием новых объектов важно для предотвращения нежелательных побочных эффектов при работе со списками в Python.

66. Правильный ответ: C

Объяснение:

В Python для хранения уникальных элементов наиболее подходит тип данных set (множество).

  • Вариант A не верен: Списки могут содержать повторяющиеся элементы и сохраняют порядок элементов.
  • Вариант B не верен: Словари хранят пары ключ-значение, и хотя ключи должны быть уникальными, для хранения просто уникальных идентификаторов пользователей это неэффективно.
  • Вариант C верен: Множества хранят только уникальные элементы в произвольном порядке и не поддерживают дубликаты.
  • Вариант D не верен: Кортежи являются неизменяемыми и могут хранить повторяющиеся элементы.

Почему множество (set) подходит для хранения уникальных идентификаторов:

  1. Уникальность элементов: Множества автоматически удаляют дубликаты, что идеально подходит для хранения уникальных идентификаторов.
  2. Быстрая проверка наличия: Проверка наличия элемента в множестве выполняется очень быстро (в среднем O(1)), благодаря реализации на основе хеш-таблицы.
  3. Неупорядоченность: Множества не гарантируют сохранение порядка элементов, что является приемлемым для идентификаторов пользователей.
  4. Изменяемость: Множества могут быть изменены (добавлять или удалять элементы).

Пример:

-7

В результате:

  • При создании множества дубликаты удаляются, поэтому "user123" встречается только один раз.
  • Элементы множества не упорядочены, поэтому порядок их вывода может не совпадать с порядком добавления.
  • Операция in проверки наличия элемента в множестве выполняется быстро.

Таким образом, вариант C является верным.

67. Правильный ответ: B

Объяснение:

Функция int() в Python используется для преобразования значения к целому числу. При преобразовании числа с плавающей точкой (float) в целое число (int), функция int() отбрасывает десятичную часть, а не округляет.

  • Вариант A не верен: int() не выполняет округление, а отбрасывает десятичную часть.
  • Вариант B верен: int() именно отбрасывает десятичную часть и возвращает целое число.
  • Вариант C не верен: int() не выполняет округление по правилам "меньше .5 в меньшую сторону, больше - в большую".
  • Вариант D не верен: Функция int() может конвертировать строку, представляющую целое число, к integer типу, но не строку с плавающей точкой (например "7.7") и не вызовет ValueError при конвертации числа float в int

Пример:

-8

В результате:

  • При преобразовании 7.7 с помощью int(), возвращается 7, десятичная часть отброшена.
  • При преобразовании -7.7, возвращается -7.
  • При преобразовании 7.2, возвращается 7.

Таким образом, вариант B является правильным ответом.

68. Правильный ответ: C

Объяснение:

Для решения задачи поиска подмассива с максимальным средним значением и фиксированной длиной k в массиве чисел, оптимальным является применение метода "скользящего окна". Этот метод обеспечивает линейную временную сложность O(n), позволяя обойти массив только один раз.

  • Алгоритм (скользящее окно):
    Инициализация:
    Вычисляем сумму первых k элементов массива, и сохраняем их в переменной current_sum.
    Максимальная сумма max_sum инициализируется значением current_sum.
    Скользящее окно:
    Начиная с k-го элемента до конца массива (для индекса i), поддерживаем окно размера k:
    Из current_sum вычитаем элемент из начала окна (nums[i-k]). * К current_sum добавляем новый элемент в конце окна nums[i].
    Сравниваем current_sum с max_sum и если больше то max_sum = current_sum
    Возвращаем результат: После перебора всех элементов, возвращаем max_sum / k, что соответствует максимальному среднему значению подмассива.
  • Преимущества алгоритма:
    Линейная сложность:
    Обеспечивает временную сложность O(n).
    Постоянная память: Использует постоянное количество дополнительной памяти.
    Простота: Легок в реализации.

Пример:

-9

Разбор вариантов:

  • A. Для решения задачи нужно сначала отсортировать массив capacity, затем последовательно заполнять сумки, пока не закончатся камни.: Неправильно.
  • B. Для решения задачи нужно использовать алгоритм поиска в ширину (BFS).: Неправильно. BFS не является подходящим для этой задачи.
  • C. Для решения задачи нужно использовать метод "скользящего окна" для эффективного поиска максимального среднего.: Правильно.
  • D. Для решения задачи нужно использовать только рекурсивный алгоритм.: Неправильно. Рекурсивный алгоритм не подходит.

В результате:

  • Алгоритм скользящего окна позволяет эффективно находить подмассив с максимальным средним значением.
  • Итерируясь по массиву только один раз достигается сложность O(n)
  • Результирующее среднее значение будет получено с помощью деления максимальной суммы на размер подмассива k

Таким образом, правильным ответом является C. Для решения задачи нужно использовать метод "скользящего окна" для эффективного поиска максимального среднего.

69. Правильный ответ: C

Объяснение:

Иммутабельность (immutability) — это концепция в программировании, особенно в функциональном программировании, которая заключается в избегании изменяемых данных. Иммутабельные объекты — это объекты, которые не могут быть изменены после создания. При изменении такого объекта фактически создаётся новый объект с измененным значением, а старый остается неизменным.

  • Основные принципы иммутабельности:
    Неизменяемость:
    Объекты не могут быть изменены после создания.
    Новый объект при изменении: Любая операция, которая кажется изменяет объект, на самом деле создаёт новый объект с измененными значениями.
    Отсутствие побочных эффектов: Функции, работающие с иммутабельными объектами, не изменяют состояние существующих данных и не создают побочных эффектов, если не создавать новые переменные.
    Простота и предсказуемость: Код становится более простым и предсказуемым, так как не происходит нежелательного изменения объектов.
  • Преимущества иммутабельности:
  • Безопасность: Исключение побочных эффектов, снижение вероятности ошибок, связанных с одновременным изменением объектов из разных частей программы. * Упрощение отладки: Код, который не изменяет данные, намного проще отлаживать. * Многопоточность: Легче работать с иммутабельными объектами в многопоточной среде, поскольку не нужно беспокоиться о гонках данных.
  • Иммутабельные и изменяемые объекты в Python:
    Иммутабельные объекты:
    * Числа (int, float, complex). * Строки (str). * Кортежи (tuple). * frozenset - не изменяемые множества. * Булевы значения (bool).
    Изменяемые объекты:
    Списки (list).
    Словари (dict).
    Множества (set).

Примеры:

-10

Разбор примеров:

  1. Пример иммутабельных объектов:
    string2 = string1.upper() создает новую строку string2 в верхнем регистре, а string1 не меняется.
    tuple2 = tuple1 + (4,5) создает новый кортеж tuple2, а tuple1 не меняется.
  2. Пример изменяемых объектов:
    list2 = list1 присваивает list2 ссылку на список, который хранится в list1, то есть, не создается новый список. * list1[0] = 10 изменяет оригинальный список, и поэтому все переменные, которые ссылаются на него, изменятся тоже.
    list2 = list1.copy() создает новый список, и он не будет изменен после изменения list1

Разбор вариантов:

  • A. Иммутабельность - это концепция, которая означает, что объекты можно изменять только в одном месте, при их создании, но не после.: Неправильно.
  • B. Иммутабельность - это использование объектов только для чтения.: Неправильно. Иммутабельные объекты не могут быть изменены совсем, а не только для чтения.
  • C. Иммутабельность - это концепция, которая заключается в избегании изменяемых данных и использовании только неизменяемых, что упрощает код и уменьшает вероятность побочных эффектов.: Правильно.
  • D. Иммутабельность - это паттерн проектирования для создания только одного объекта определенного типа, без возможности изменения его состояния.: Неправильно.

В результате:

  • Иммутабельность способствует созданию более безопасного, предсказуемого и простого кода.
  • Иммутабельные объекты не могут быть изменены после создания, что позволяет избежать ошибок связанных с изменением состояния.

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

70. Правильный ответ: C

Объяснение:

Композиция функций (function composition) — это функциональный паттерн, который позволяет объединять две или более функции таким образом, что результат одной функции передается в качестве аргумента другой функции. Это позволяет создавать новые, более сложные функции, из простых и переиспользуемых.

  • Основные концепции композиции функций:
    Цепочка вычислений:
    Результат одной функции становится входным значением для следующей функции.
    Последовательное применение: Функции применяются друг за другом в определенном порядке.
    Новая функция из простых: Композиция позволяет создавать сложные функции из более простых.
    Возможность повторного использования: Композиция позволяет переиспользовать ранее созданные функции.
  • Реализация композиции в Python:
    В Python композицию можно реализовать вручную с помощью вложенных вызовов функций или с помощью оператора | (начиная с Python 3.9), или с помощью использования лямбда-функций.

Пример (из текста вопроса):

-11

Описание примера:

  1. double(x): Функция, которая умножает число x на 2.
  2. square(x): Функция, которая возводит число x в квадрат.
  3. compose(f, g): Функция, реализующая композицию.
    Принимает функции f и g в качестве аргументов.
    Возвращает лямбда-функцию lambda x: f(g(x)), которая сначала применяет функцию g к аргументу x, а затем применяет функцию f к результату g(x).
  4. composed = compose(square, double): Создается новая функция composed, которая является композицией square и double. Она эквивалента lambda x : square(double(x)).
  5. composed(5): Принимает аргумент 5 и выполняет функции в порядке (5*2)**2, т.е. double(5) (что равно 10) и затем square(10) (что равно 100).

Другие примеры:

-12

Разбор вариантов:

  • A. Композиция функций - это процесс создания объектов из классов, использующих значения, полученные из других объектов.: Неправильно. Композиция функций не связана с созданием объектов из классов.
  • B. Композиция функций - это процесс, когда функция вызывает себя несколько раз.: Неправильно. Это описание рекурсии.
  • C. Композиция функций - это комбинация двух или более функций, при которой результат выполнения одной функции передается в качестве аргумента другой функции.: Правильно.
  • D. Композиция функций - это способ создания функций, которые могут выполняться в отдельных потоках.: Неправильно.

В результате:

  • Композиция функций позволяет создавать более сложные операции из простых.
  • Использование композиции способствует модульности и переиспользованию кода.

Таким образом, правильным ответом является C. Композиция функций - это комбинация двух или более функций, при которой результат выполнения одной функции передается в качестве аргумента другой функции.

удачи!

Предыдущие вопросы

101 игра на python. Вопросы собеседований. 1 - 10⁠⁠
101 игра на python7 января 2025
101 python. Вопросы собеседований. 11 - 20
101 игра на python7 января 2025
101 игра на python. Вопросы собеседований. 21 - 30
101 игра на python11 января 2025
101 игра на python. Вопросы собеседований. 31 - 40
101 игра на python13 января 2025
101 игра на python. Вопросы собеседований. 41 - 50
101 игра на python23 января 2025
Вопросы собеседований pyton. вопросы 51 - 60⁠⁠
101 игра на python24 января 2025
Вопросы собеседований pyton. вопросы 61 - 70⁠⁠
101 игра на python24 января 2025