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

Python. Вопросы собеседований 81 - 90

Вопрос 81. Как можно сконкатенировать (объединить) два списка в Python? Вопрос 82. Какой будет результат выполнения следующего кода? Вопрос 83. Что произойдет, если не указать тип исключения в блоке except конструкции try-except в Python? Вопрос 84. Какой результат будет получен при выполнении следующего кода Python? Вопрос 85. Что делает ключевое слово continue в цикле? Вопрос 86. Как создать множество (set) в Python? Вопрос 87. Что делает функция dict() в Python? Вопрос 88. Каково назначение блока else в инструкции try...except? Вопрос 89. Что такое "магические методы" (magic methods) в Python и для чего они нужны? Вопрос 90. В чем разница между == и is в Python? 81. Правильный ответ: B. Используя оператор + Объяснение: В Python для объединения двух списков в один новый список используется оператор +. Этот оператор создает новый список, содержащий все элементы первого списка, за которыми следуют все элементы второго списка. Разбор вариантов: Пример конкатенации списков с оператором +
Оглавление

Вопросы

Вопрос 81. Как можно сконкатенировать (объединить) два списка в Python?

  • A. Используя оператор *
  • B. Используя оператор +
  • C. Используя метод append()
  • D. Используя метод concat()

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

  • A. 1
  • B. 5
  • C. 120
  • D. Вызовет ошибку переполнения стека.

Вопрос 83. Что произойдет, если не указать тип исключения в блоке except конструкции try-except в Python?

  • A. Блок except пропустит все исключения.
  • B. Блок except перехватит все исключения, независимо от их типа.
  • C. Программа немедленно завершится с ошибкой.
  • D. Блок except обработает только исключения типа Exception.

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

-2
  • A. True True True True
  • B. True False True False
  • C. False True False True
  • D. True True False True

Вопрос 85. Что делает ключевое слово continue в цикле?

  • A. Немедленно выходит из цикла.
  • B. Пропускает оставшуюся часть кода внутри цикла для текущей итерации.
  • C. Приостанавливает выполнение цикла.
  • D. Ничего из вышеперечисленного.

Вопрос 86. Как создать множество (set) в Python?

  • A. set = {1, 2, 3}
  • B. set = [1, 2, 3]
  • C. set = (1, 2, 3)
  • D. set = '123'

Вопрос 87. Что делает функция dict() в Python?

  • A. Создает новый словарь.
  • B. Преобразует кортеж в словарь.
  • C. Преобразует список кортежей в словарь.
  • D. Оба варианта A и C верны.

Вопрос 88. Каково назначение блока else в инструкции try...except?

  • A. Выполнить код после блока try, если не было выброшено ни одного исключения.
  • B. Обработать исключение, если блок except не смог его обработать.
  • C. Всегда выполняться после блока try, независимо от того, было ли выброшено исключение или нет.
  • D. Проверить дополнительное условие после блоков try и except.

Вопрос 89. Что такое "магические методы" (magic methods) в Python и для чего они нужны?

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

Вопрос 90. В чем разница между == и is в Python?

  • A. == проверяет равенство по значению, тогда как is проверяет равенство в области памяти.
  • B. == проверяет, указывают ли переменные на один и тот же объект, тогда как is проверяет равенство значения.
  • C. == используется для строк, а is — для чисел.
  • D. Разницы нет; оба используются взаимозаменяемо.

Ответы

81. Правильный ответ: B. Используя оператор +

Объяснение:

В Python для объединения двух списков в один новый список используется оператор +. Этот оператор создает новый список, содержащий все элементы первого списка, за которыми следуют все элементы второго списка.

  • Оператор +:
    Создает новый список, который является результатом объединения двух исходных списков.
    Исходные списки не изменяются.

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

  • Используя оператор *: Неправильно. Оператор * используется для повторения списка определенное количество раз.
  • Используя оператор +: Правильно. Оператор + используется для конкатенации (объединения) списков.
  • Используя метод append(): Неправильно. Метод append() добавляет один элемент в конец существующего списка, а не объединяет два списка.
  • Используя метод concat(): Неправильно. В Python нет встроенного метода concat() для списков.

Пример конкатенации списков с оператором +:

-3

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

  • Оператор + является наиболее простым и распространенным способом объединения списков в Python.
  • Исходные списки не изменяются, а создается новый список, который содержит все элементы двух исходных списков.
  • Конкатенация списков через + может быть менее эффективной для больших списков.

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

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

Объяснение:

Данный код реализует рекурсивную функцию для вычисления факториала числа. Функция my_function(n) возвращает n! (факториал n).

  • Базовый случай: Если n равно 0, функция возвращает 1 (факториал 0 равен 1).
  • Рекурсивный случай: Если n больше 0, функция возвращает n умноженное на результат вызова самой себя с n-1.

Таким образом, вызов my_function(5) будет выполнен следующим образом:

my_function(5) = 5 * my_function(4)
my_function(4) = 4 * my_function(3)
my_function(3) = 3 * my_function(2)
my_function(2) = 2 * my_function(1)
my_function(1) = 1 * my_function(0)
my_function(0) = 1

Подставляя значения снизу вверх, получаем:

1 * 1 * 2 * 3 * 4 * 5 = 120

Следовательно, результат вызова print(my_function(5)) будет 120.

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

  • Рекурсивные функции должны иметь условие выхода из рекурсии, чтобы избежать бесконечного вызова функций и ошибки переполнения стека.
  • Данная рекурсивная реализация факториала вполне подходит для небольших чисел, но для очень больших чисел может быть менее эффективна, чем итеративная реализация. Вот пример итеративной реализации факториала:
-4

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

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

Объяснение:

Если вы не укажете тип исключения в блоке except, то он будет действовать как обработчик для всех исключений, которые могут возникнуть в блоке try. Это может быть полезно для отлова любых непредвиденных ошибок, но в некоторых ситуациях это может помешать в точной отладке кода, поскольку будет трудно определить тип произошедшей ошибки.

  • Вариант A не верен: Блок except не пропускает исключения.
  • Вариант B верен: Блок except без указания типа перехватывает любое исключение.
  • Вариант C не верен: Программа не завершится при перехвате исключения.
  • Вариант D не верен: Исключения класса Exception обрабатываются только, если они указаны явно.

Пример:

-5

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

  • В первом примере блок except перехватывает исключение ZeroDivisionError.
  • Во втором примере, первое except перехватывает ValueError, а второе except не будет выполняться, так как исключение уже было обработано.

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

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

Объяснение:

Код проверяет, являются ли два слова анаграммами (состоят из одних и тех же букв, но в разном порядке).

  1. Функция anagram(word1, word2):
    Преобразует оба слова в нижний регистр (lower()).
    Сортирует буквы каждого слова (sorted()).
    Если отсортированные буквы одинаковы, возвращает True (слова - анаграммы), иначе False.
  2. Результаты вызовов:
    "cinema" и "iceman": Анаграммы. sorted("cinema") == sorted("iceman") -> True
    "cool" и "loco": Анаграммы. sorted("cool") == sorted("loco") -> True
    "men" и "women": Не анаграммы. sorted("men") != sorted("women") -> False
    "python" и "pythno": Анаграммы. sorted("python") == sorted("pythno") -> True

Таким образом, вывод программы: True True False True.

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

Объяснение:

Ключевое слово continue в Python используется внутри циклов (например, for и while) для пропуска оставшейся части текущей итерации и перехода к следующей итерации цикла.

  • Вариант A не верен: continue не прерывает цикл, а только текущую итерацию. Для прерывания цикла используется break.
  • Вариант B верен: continue пропускает оставшийся код в текущей итерации и переходит к следующей.
  • Вариант C не верен: continue не приостанавливает выполнение цикла.
  • Вариант D не верен: Вариант B верен.

Как работает continue:

  1. Когда интерпретатор Python встречает continue внутри цикла, он пропускает все оставшиеся операторы текущей итерации.
  2. Выполнение программы переходит к следующей итерации цикла, то есть условие в while или следующему элементу в for цикле.
  3. Пропуск итерации происходит только для текущей итерации, остальные итерации цикла работают как обычно.

Типичные примеры использования:

  1. Пропуск определенной итерации: Когда нужно пропустить определенные итерации, основываясь на каком-то условии.
  2. Фильтрация данных: Когда нужно пропустить некоторые элементы в итерируемой структуре.

Пример:

-6

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

  • В цикле for выводятся только нечетные числа, так как continue пропускает итерацию для четных чисел.
  • В цикле while выводятся все числа, кроме тех что делятся на 3.

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

86. Правильный ответ: A

Объяснение:

В Python множество (set) создается с использованием фигурных скобок {}, в которые помещаются уникальные, хешируемые элементы.

  • Вариант A верен: set = {1, 2, 3} - это корректный способ создания множества.
  • Вариант B не верен: set = [1, 2, 3] - создает список (list), а не множество.
  • Вариант C не верен: set = (1, 2, 3) - создает кортеж (tuple), а не множество.
  • Вариант D не верен: set = '123' - создает строку (str), а не множество.

Ключевые характеристики множества (set):

  1. Уникальность элементов: Множество содержит только уникальные элементы, дубликаты автоматически удаляются.
  2. Неупорядоченность: Элементы в множестве не хранятся в каком-либо определенном порядке.
  3. Мутабельность: Множества являются изменяемыми, что позволяет добавлять и удалять элементы после создания множества.

Пример:

-7

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

  • my_set = {1, 2, 3} создает множество, содержащее целые числа 1, 2 и 3.
  • При создании множества my_set_dupl дубликаты автоматически удаляются.

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

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

Объяснение:

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

  • Вариант A верен: dict() может быть вызвана без аргументов и создаст пустой словарь.
  • Вариант B не верен: Функция dict() не преобразует кортеж в словарь. Кортеж должен содержать пары ключ значение, чтобы был создан словарь.
  • Вариант C верен: dict() может преобразовать список кортежей, где каждый кортеж представляет собой пару ключ-значение, в словарь.
  • Вариант D верен: Так как и A, и C верны.

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

  1. Без аргументов: Если dict() вызывается без аргументов, он создает пустой словарь.
  2. С аргументами:
    Если dict() вызывается с одним аргументом — списком кортежей, где каждый кортеж состоит из двух элементов (ключа и значения) то он создаст словарь из этих пар ключ-значение.
    Можно передать и другие аргументы (именованные аргументы), которые станут ключами и значениями.

Примеры:

-8

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

  • dict() без аргументов создает пустой словарь.
  • dict(my_list) создает словарь из списка кортежей.
  • dict(a=1, b=2, c=3) создает словарь с ключами "a","b","c" и соответсвующими значениями.

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

88. Правильный ответ: A

Объяснение:

В Python блок else в конструкции try...except выполняется только в том случае, если блок try выполнился без возникновения исключений.

  • Вариант A верен: else выполняется, если блок try завершился успешно без исключений.
  • Вариант B не верен: Если except не может обработать исключение, программа аварийно завершится. else не предназначен для обработки исключений, которые не поймал except.
  • Вариант C не верен: Для действий, которые выполняются всегда, независимо от наличия исключений, используется блок finally, а не else.
  • Вариант D не верен: Блок else не проверяет дополнительные условия, он просто выполняется при успешном выполнении блока try.

Как работает try...except...else:

  1. Сначала выполняется код в блоке try.
  2. Если в блоке try возникает исключение, то управление переходит в блок except (если есть соответствующий тип исключения) или далее по цепочке.
  3. Если в блоке try не возникает исключения, то выполняется блок else, который расположен после всех блоков except.
  4. Блок finally выполняется всегда вне зависимости от того, было ли исключение или нет.

Пример:

-9

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

  • При вызове process_number(2) ошибок нет и выполняется блок else, выводя "Результат деления: 5.0".
  • При вызове process_number(0) происходит ZeroDivisionError и код переходит в блок except, выводя "Ошибка: деление на ноль" и не выполняя блок else.

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

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

Объяснение:

"Магические методы" (также известные как "dunder methods" от "double underscore") в Python - это специальные методы, которые имеют предопределенные имена, начинающиеся и заканчивающиеся двумя подчеркиваниями (например, __init__, __len__, __add__). Они используются для определения поведения объектов при применении к ним встроенных функций, операторов или синтаксических конструкций.

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

Примеры:

  • __init__(self, ...): Вызывается при создании нового объекта (конструктор).
  • __len__(self): Вызывается функцией len().
  • __add__(self, other): Вызывается оператором сложения +.
  • __str__(self): Вызывается функцией str() или при использовании print().
  • __repr__(self): Вызывается функцией repr().
  • __iter__(self) и __next__(self): Используются для реализации итераторов.
  • __getitem__(self, key): Вызывается при доступе к элементу по индексу obj[key].

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

  • A. Это методы, которые вызываются только в особых ситуациях, например, при обработке исключений: Неправильно. Хотя некоторые магические методы связаны с исключениями (__enter__, __exit__), их основное применение шире.
  • B. Это методы, которые могут изменять внутреннее состояние объектов, но не видны при вызове: Неправильно. Магические методы не только могут изменять состояние, но и вызываются неявно, а не скрыты.
  • C. Это методы, имена которых начинаются и заканчиваются двойным подчеркиванием, и которые вызываются неявно встроенными функциями или синтаксическими конструкциями: Правильно. Это точное определение магических методов.
  • D. Это методы, которые используются для отладки программ и вывода информации о переменных: Неправильно. Хотя __str__ и __repr__ могут использоваться для вывода информации, это не их основное назначение.

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

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

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

90. Правильный ответ: A

Объяснение:

В Python операторы == и is используются для сравнения, но они делают это по-разному:

  • == (равно): Этот оператор сравнивает значения объектов. Он возвращает True, если значения объектов равны, и False в противном случае.
  • is (является): Этот оператор сравнивает идентичность объектов. Он возвращает True, если обе переменные указывают на один и тот же объект в памяти, и False в противном случае.
  • Вариант A верен: == проверяет равенство значений, а is проверяет идентичность (указывают ли переменные на один и тот же объект в памяти).
  • Вариант B не верен: Наоборот, == проверяет равенство значений, а is проверяет идентичность.
  • Вариант C не верен: == и is используются для любого типа данных.
  • Вариант D не верен: == и is не взаимозаменяемы, у них разное назначение.

Подробное объяснение:

  • ==: Сравнивает значения объектов, используя метод __eq__(), который может быть переопределен для пользовательских классов.
  • is: Сравнивает идентификаторы объектов, то есть адреса памяти. Если две переменные ссылаются на один и тот же объект в памяти, то is вернет True.

Пример:

-10

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

  • a и b содержат списки с одинаковыми значениями, поэтому a == b дает True, но это два разных объекта в памяти, поэтому a is b дает False.
  • a и c ссылаются на один и тот же объект, поэтому a is c возвращает True
  • Для небольших чисел Python может создавать одинаковые объекты в памяти, для оптимизации работы, поэтому для num3 и num4 оператор is вернул True.

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

Удачи!

Вопросы собеседований python. Вопросы 71 - 80
101 игра на python2 февраля 2025
Готовимся к собедованию Python. Вопросы 61 - 70
101 игра на python27 января 2025
Вопросы собеседований pyton. вопросы 51 - 60⁠⁠
101 игра на python24 января 2025
101 игра на python. Вопросы собеседований. 41 - 50
101 игра на python23 января 2025
101 игра на python. Вопросы собеседований. 31 - 40
101 игра на python13 января 2025
101 игра на python. Вопросы собеседований. 21 - 30
101 игра на python11 января 2025
101 python. Вопросы собеседований. 11 - 20
101 игра на python7 января 2025
101 игра на python. Вопросы собеседований. 1 - 10⁠⁠
101 игра на python7 января 2025