Вопросы
Вопрос 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?
- 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() для списков.
Пример конкатенации списков с оператором +:
В результате:
- Оператор + является наиболее простым и распространенным способом объединения списков в 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.
Дополнительные замечания:
- Рекурсивные функции должны иметь условие выхода из рекурсии, чтобы избежать бесконечного вызова функций и ошибки переполнения стека.
- Данная рекурсивная реализация факториала вполне подходит для небольших чисел, но для очень больших чисел может быть менее эффективна, чем итеративная реализация. Вот пример итеративной реализации факториала:
Итеративная реализация часто более эффективна по памяти, так как не использует стек вызовов.
83. Правильный ответ: B
Объяснение:
Если вы не укажете тип исключения в блоке except, то он будет действовать как обработчик для всех исключений, которые могут возникнуть в блоке try. Это может быть полезно для отлова любых непредвиденных ошибок, но в некоторых ситуациях это может помешать в точной отладке кода, поскольку будет трудно определить тип произошедшей ошибки.
- Вариант A не верен: Блок except не пропускает исключения.
- Вариант B верен: Блок except без указания типа перехватывает любое исключение.
- Вариант C не верен: Программа не завершится при перехвате исключения.
- Вариант D не верен: Исключения класса Exception обрабатываются только, если они указаны явно.
Пример:
В результате:
- В первом примере блок except перехватывает исключение ZeroDivisionError.
- Во втором примере, первое except перехватывает ValueError, а второе except не будет выполняться, так как исключение уже было обработано.
Таким образом, вариант B является правильным.
84. Правильный ответ: D
Объяснение:
Код проверяет, являются ли два слова анаграммами (состоят из одних и тех же букв, но в разном порядке).
- Функция anagram(word1, word2):
Преобразует оба слова в нижний регистр (lower()).
Сортирует буквы каждого слова (sorted()).
Если отсортированные буквы одинаковы, возвращает True (слова - анаграммы), иначе False. - Результаты вызовов:
"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:
- Когда интерпретатор Python встречает continue внутри цикла, он пропускает все оставшиеся операторы текущей итерации.
- Выполнение программы переходит к следующей итерации цикла, то есть условие в while или следующему элементу в for цикле.
- Пропуск итерации происходит только для текущей итерации, остальные итерации цикла работают как обычно.
Типичные примеры использования:
- Пропуск определенной итерации: Когда нужно пропустить определенные итерации, основываясь на каком-то условии.
- Фильтрация данных: Когда нужно пропустить некоторые элементы в итерируемой структуре.
Пример:
В результате:
- В цикле 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):
- Уникальность элементов: Множество содержит только уникальные элементы, дубликаты автоматически удаляются.
- Неупорядоченность: Элементы в множестве не хранятся в каком-либо определенном порядке.
- Мутабельность: Множества являются изменяемыми, что позволяет добавлять и удалять элементы после создания множества.
Пример:
В результате:
- 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():
- Без аргументов: Если dict() вызывается без аргументов, он создает пустой словарь.
- С аргументами:
Если dict() вызывается с одним аргументом — списком кортежей, где каждый кортеж состоит из двух элементов (ключа и значения) то он создаст словарь из этих пар ключ-значение.
Можно передать и другие аргументы (именованные аргументы), которые станут ключами и значениями.
Примеры:
В результате:
- 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:
- Сначала выполняется код в блоке try.
- Если в блоке try возникает исключение, то управление переходит в блок except (если есть соответствующий тип исключения) или далее по цепочке.
- Если в блоке try не возникает исключения, то выполняется блок else, который расположен после всех блоков except.
- Блок finally выполняется всегда вне зависимости от того, было ли исключение или нет.
Пример:
В результате:
- При вызове 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.
Пример:
В результате:
- a и b содержат списки с одинаковыми значениями, поэтому a == b дает True, но это два разных объекта в памяти, поэтому a is b дает False.
- a и c ссылаются на один и тот же объект, поэтому a is c возвращает True
- Для небольших чисел Python может создавать одинаковые объекты в памяти, для оптимизации работы, поэтому для num3 и num4 оператор is вернул True.
Таким образом, вариант A является правильным.
Удачи!