Тест по самым необычным особенностям Python

1 / 10

Что интерпретатор выведет на месте знаков вопроса?

 
>>> a = ([],)
>>> a[0].extend([1])
>>> a[0] == [1]
?
Не верно!

Сам кортеж представляет собой неизменяемый объект, но список, как изменяемая последовательность, может быть расширен.


Верно!

Сам кортеж представляет собой неизменяемый объект, но список, как изменяемая последовательность, может быть расширен.


Не верно!

Сам кортеж представляет собой неизменяемый объект, но список, как изменяемая последовательность, может быть расширен.


Что интерпретатор выведет на месте знаков вопроса?

 
>>> x = float('nan')
>>> x == x
?
>>> len({x, x}) == 1
?
Не верно!

Сравнение любого объекта с NaN дает False, даже сравнение NaN с NaN. Однако объект x идентичен самому себе. Поэтому, сколько бы не было в множестве одинаковых NaN-объектов, они “сольются” в один.


Не верно!

Сравнение любого объекта с NaN дает False, даже сравнение NaN с NaN. Однако объект x идентичен самому себе. Поэтому, сколько бы не было в множестве одинаковых NaN-объектов, они “сольются” в один.


Верно!

Сравнение любого объекта с NaN дает False, даже сравнение NaN с NaN. Однако объект x идентичен самому себе. Поэтому, сколько бы не было в множестве одинаковых NaN-объектов, они “сольются” в один.


Не верно!

Сравнение любого объекта с NaN дает False, даже сравнение NaN с NaN. Однако объект x идентичен самому себе. Поэтому, сколько бы не было в множестве одинаковых NaN-объектов, они “сольются” в один.


Что интерпретатор выведет на месте знаков вопроса?

 
>>> a = 100
>>> b = 100
>>> a is b
?
>>> a = 300
>>> b = 300
>>> a is b
?
Не верно!

Текущая реализация Python хранит массив для целых чисел от -5 до 256. Когда вы создаете int-объект в этом диапазоне, интерпретатор возвращает ссылку на уже существующий объект. Поэтому в первом случае ссылки равны, а во втором нет.


Не верно!

Текущая реализация Python хранит массив для целых чисел от -5 до 256. Когда вы создаете int-объект в этом диапазоне, интерпретатор возвращает ссылку на уже существующий объект. Поэтому в первом случае ссылки равны, а во втором нет.


Не верно!

Текущая реализация Python хранит массив для целых чисел от -5 до 256. Когда вы создаете int-объект в этом диапазоне, интерпретатор возвращает ссылку на уже существующий объект. Поэтому в первом случае ссылки равны, а во втором нет.


Верно!

Текущая реализация Python хранит массив для целых чисел от -5 до 256. Когда вы создаете int-объект в этом диапазоне, интерпретатор возвращает ссылку на уже существующий объект. Поэтому в первом случае ссылки равны, а во втором нет.


Что интерпретатор выведет на месте знаков вопроса?

 
>>> all([])
?
>>> all([[]])
?
>>> all([[[]]])
?
Не верно!

Первый случай соответствует определению функции all в документации: если итерируемый объект пуст, all возвращает True. Во втором случае приведение пустого списка к булевому типу дает False. Наконец, в третьем случае вложенный список содержит один элемент (False), что соответствует True. По этой же причине более сильные уровни вложенности будут также, как в третьем случае, давать True.


Верно!

Первый случай соответствует определению функции all в документации: если итерируемый объект пуст, all возвращает True. Во втором случае приведение пустого списка к булевому типу дает False. Наконец, в третьем случае вложенный список содержит один элемент (False), что соответствует True. По этой же причине более сильные уровни вложенности будут также, как в третьем случае, давать True.


Не верно!

Первый случай соответствует определению функции all в документации: если итерируемый объект пуст, all возвращает True. Во втором случае приведение пустого списка к булевому типу дает False. Наконец, в третьем случае вложенный список содержит один элемент (False), что соответствует True. По этой же причине более сильные уровни вложенности будут также, как в третьем случае, давать True.


Не верно!

Первый случай соответствует определению функции all в документации: если итерируемый объект пуст, all возвращает True. Во втором случае приведение пустого списка к булевому типу дает False. Наконец, в третьем случае вложенный список содержит один элемент (False), что соответствует True. По этой же причине более сильные уровни вложенности будут также, как в третьем случае, давать True.


Не верно!

Первый случай соответствует определению функции all в документации: если итерируемый объект пуст, all возвращает True. Во втором случае приведение пустого списка к булевому типу дает False. Наконец, в третьем случае вложенный список содержит один элемент (False), что соответствует True. По этой же причине более сильные уровни вложенности будут также, как в третьем случае, давать True.


Не верно!

Первый случай соответствует определению функции all в документации: если итерируемый объект пуст, all возвращает True. Во втором случае приведение пустого списка к булевому типу дает False. Наконец, в третьем случае вложенный список содержит один элемент (False), что соответствует True. По этой же причине более сильные уровни вложенности будут также, как в третьем случае, давать True.


Не верно!

Первый случай соответствует определению функции all в документации: если итерируемый объект пуст, all возвращает True. Во втором случае приведение пустого списка к булевому типу дает False. Наконец, в третьем случае вложенный список содержит один элемент (False), что соответствует True. По этой же причине более сильные уровни вложенности будут также, как в третьем случае, давать True.


Не верно!

Первый случай соответствует определению функции all в документации: если итерируемый объект пуст, all возвращает True. Во втором случае приведение пустого списка к булевому типу дает False. Наконец, в третьем случае вложенный список содержит один элемент (False), что соответствует True. По этой же причине более сильные уровни вложенности будут также, как в третьем случае, давать True.


Что интерпретатор выведет на месте знаков вопроса?

 
>>> x, y = {0}, {1}
>>> min(x, y) == min(y, x)
?
>>> min(x | y) == min(y | x)
?
Не верно!

В первом случае min из двух множеств возвращает первое объявленное множество. При объединении множеств порядок объединения не имеет значения и объединенные множества оказываются идентичны.


Не верно!

В первом случае min из двух множеств возвращает первое объявленное множество. При объединении множеств порядок объединения не имеет значения и объединенные множества оказываются идентичны.


Верно!

В первом случае min из двух множеств возвращает первое объявленное множество. При объединении множеств порядок объединения не имеет значения и объединенные множества оказываются идентичны.


Не верно!

В первом случае min из двух множеств возвращает первое объявленное множество. При объединении множеств порядок объединения не имеет значения и объединенные множества оказываются идентичны.


Что интерпретатор выведет на месте знаков вопроса?

 
>>> a = [1, 2]
>>> b = [2, 1]
>>> sorted(a) == sorted(b)
?
>>> reversed(a) == reversed(a)
?
>>> b = reversed(a)
>>> sorted(b) == sorted(b)
?
Не верно!

В первом случае сравниваются два идентичных отсортированных списка. Во втором случае сравниваются итераторы, которые имеют разные идентификаторы. Наконец, в заключительном примере сравнивается список и пустой список, так как при втором вызове sorted(b) итератор b уже был использован.


Не верно!

В первом случае сравниваются два идентичных отсортированных списка. Во втором случае сравниваются итераторы, которые имеют разные идентификаторы. Наконец, в заключительном примере сравнивается список и пустой список, так как при втором вызове sorted(b) итератор b уже был использован.


Не верно!

В первом случае сравниваются два идентичных отсортированных списка. Во втором случае сравниваются итераторы, которые имеют разные идентификаторы. Наконец, в заключительном примере сравнивается список и пустой список, так как при втором вызове sorted(b) итератор b уже был использован.


Не верно!

В первом случае сравниваются два идентичных отсортированных списка. Во втором случае сравниваются итераторы, которые имеют разные идентификаторы. Наконец, в заключительном примере сравнивается список и пустой список, так как при втором вызове sorted(b) итератор b уже был использован.


Не верно!

В первом случае сравниваются два идентичных отсортированных списка. Во втором случае сравниваются итераторы, которые имеют разные идентификаторы. Наконец, в заключительном примере сравнивается список и пустой список, так как при втором вызове sorted(b) итератор b уже был использован.


Не верно!

В первом случае сравниваются два идентичных отсортированных списка. Во втором случае сравниваются итераторы, которые имеют разные идентификаторы. Наконец, в заключительном примере сравнивается список и пустой список, так как при втором вызове sorted(b) итератор b уже был использован.


Не верно!

В первом случае сравниваются два идентичных отсортированных списка. Во втором случае сравниваются итераторы, которые имеют разные идентификаторы. Наконец, в заключительном примере сравнивается список и пустой список, так как при втором вызове sorted(b) итератор b уже был использован.


Верно!

В первом случае сравниваются два идентичных отсортированных списка. Во втором случае сравниваются итераторы, которые имеют разные идентификаторы. Наконец, в заключительном примере сравнивается список и пустой список, так как при втором вызове sorted(b) итератор b уже был использован.


Что интерпретатор выведет на месте знаков вопроса?

 
>>> False == False in [False]
?
>>> (False == False) and (False in [False])
?
Не верно!

Первая цепочка идентична второй. Операции == и in не имеют приоритета друг перед другом. Поэтому первое выражение преобразуется интерпретатором так же, как второй запрос, в котором оба утверждения верны. Соответственно в обоих случаях возвращается истинное значение.


Верно!

Первая цепочка идентична второй. Операции == и in не имеют приоритета друг перед другом. Поэтому первое выражение преобразуется интерпретатором так же, как второй запрос, в котором оба утверждения верны. Соответственно в обоих случаях возвращается истинное значение.


Не верно!

Первая цепочка идентична второй. Операции == и in не имеют приоритета друг перед другом. Поэтому первое выражение преобразуется интерпретатором так же, как второй запрос, в котором оба утверждения верны. Соответственно в обоих случаях возвращается истинное значение.


Не верно!

Первая цепочка идентична второй. Операции == и in не имеют приоритета друг перед другом. Поэтому первое выражение преобразуется интерпретатором так же, как второй запрос, в котором оба утверждения верны. Соответственно в обоих случаях возвращается истинное значение.


Что интерпретатор выведет на месте знаков вопроса?

 
>>> x = (1 << 53) + 1
>>> x + 1.0 < x
?
>>> x = float((1 << 53) + 1)
>>> x + 1.0 < x
?
Не верно!

В первой строке через сдвиговый регистр записана операция возведения в степень 2^53+1. Важно, что это число точно представимо Python в виде целого (int). При добавлении 1.0 происходит преобразование целочисленного типа данных в тип данных float. Число уже не может быть представлено точно. При этом важно, что по правилам округления в Python оно преобразуется к N-1.

Итак, в левой части для того, чтобы произвести операцию сложения, x преобразуется во float, в результате преобразования и округления оно представляется в виде числа N-1. Сумма с 1.0 дает исходное число N, которое в результате округления полученной float-суммы вновь теряет единицу и, таким образом, слева float-число N-1, а справа int-число, содержащее исходное значение N. Чтобы лучше разобраться с вопросами представления чисел в Python, прочитайте статью Дэвида Голдберга.

Во втором случае происходит явное приведение числа к типу float, и проблема пропадает.


Не верно!

В первой строке через сдвиговый регистр записана операция возведения в степень 2^53+1. Важно, что это число точно представимо Python в виде целого (int). При добавлении 1.0 происходит преобразование целочисленного типа данных в тип данных float. Число уже не может быть представлено точно. При этом важно, что по правилам округления в Python оно преобразуется к N-1.

Итак, в левой части для того, чтобы произвести операцию сложения, x преобразуется во float, в результате преобразования и округления оно представляется в виде числа N-1. Сумма с 1.0 дает исходное число N, которое в результате округления полученной float-суммы вновь теряет единицу и, таким образом, слева float-число N-1, а справа int-число, содержащее исходное значение N. Чтобы лучше разобраться с вопросами представления чисел в Python, прочитайте статью Дэвида Голдберга.

Во втором случае происходит явное приведение числа к типу float, и проблема пропадает.


Верно!

В первой строке через сдвиговый регистр записана операция возведения в степень 2^53+1. Важно, что это число точно представимо Python в виде целого (int). При добавлении 1.0 происходит преобразование целочисленного типа данных в тип данных float. Число уже не может быть представлено точно. При этом важно, что по правилам округления в Python оно преобразуется к N-1.

Итак, в левой части для того, чтобы произвести операцию сложения, x преобразуется во float, в результате преобразования и округления оно представляется в виде числа N-1. Сумма с 1.0 дает исходное число N, которое в результате округления полученной float-суммы вновь теряет единицу и, таким образом, слева float-число N-1, а справа int-число, содержащее исходное значение N. Чтобы лучше разобраться с вопросами представления чисел в Python, прочитайте статью Дэвида Голдберга.

Во втором случае происходит явное приведение числа к типу float, и проблема пропадает.


Не верно!

В первой строке через сдвиговый регистр записана операция возведения в степень 2^53+1. Важно, что это число точно представимо Python в виде целого (int). При добавлении 1.0 происходит преобразование целочисленного типа данных в тип данных float. Число уже не может быть представлено точно. При этом важно, что по правилам округления в Python оно преобразуется к N-1.

Итак, в левой части для того, чтобы произвести операцию сложения, x преобразуется во float, в результате преобразования и округления оно представляется в виде числа N-1. Сумма с 1.0 дает исходное число N, которое в результате округления полученной float-суммы вновь теряет единицу и, таким образом, слева float-число N-1, а справа int-число, содержащее исходное значение N. Чтобы лучше разобраться с вопросами представления чисел в Python, прочитайте статью Дэвида Голдберга.

Во втором случае происходит явное приведение числа к типу float, и проблема пропадает.


Что интерпретатор выведет на месте знаков вопроса?

 
>>> [1, 2, 3] == sorted([1, 2, 3])
?
>>> (1, 2, 3) == sorted((1, 2, 3))
?
Верно!

sorted возвращает отсортированный список элементов последовательности. Во втором случае список не равен кортежу.


Не верно!

sorted возвращает отсортированный список элементов последовательности. Во втором случае список не равен кортежу.


Не верно!

sorted возвращает отсортированный список элементов последовательности. Во втором случае список не равен кортежу.


Не верно!

sorted возвращает отсортированный список элементов последовательности. Во втором случае список не равен кортежу.


Что интерпретатор выведет на месте знаков вопроса?

 
>>> data = {1:'one', '1':'won', True:'true'}
>>> data[1] == 'one'
?
>>> len(data) == 2
?
Верно!

Булевые значения True и False наследуются от целых чисел 1 и 0. В результате при инициализации ключей словаря исходное value ключа 1 заменяется строкой ‘true’. Таким образом, в словаре есть всего два элемента, а не три, как можно было ожидать из объявления словаря.


Не верно!

Булевые значения True и False наследуются от целых чисел 1 и 0. В результате при инициализации ключей словаря исходное value ключа 1 заменяется строкой ‘true’. Таким образом, в словаре есть всего два элемента, а не три, как можно было ожидать из объявления словаря.


Не верно!

Булевые значения True и False наследуются от целых чисел 1 и 0. В результате при инициализации ключей словаря исходное value ключа 1 заменяется строкой ‘true’. Таким образом, в словаре есть всего два элемента, а не три, как можно было ожидать из объявления словаря.


Не верно!

Булевые значения True и False наследуются от целых чисел 1 и 0. В результате при инициализации ключей словаря исходное value ключа 1 заменяется строкой ‘true’. Таким образом, в словаре есть всего два элемента, а не три, как можно было ожидать из объявления словаря.


Далее
0 из 10

Поздравляем с прохождением теста! У вас уже есть некоторые знания о Python, но ещё есть куда расти. Отличное место, где можно подтянуть базу по языку и связать свои навыки с другими современными технологиями – наш сайт PythonTurbo.

Интересно, хочу посмотреть