🐍 Python  ·  20 вопросов  ·  ~50 мин  ·  ⏱ Таймер 50:00  ·  Средний  · 

Включения и компактные выражения

Проверяет списковые, словарные и множественные включения без потери читаемости. Вопросы требуют проследить выполнение, сравнить близкие варианты и заметить условие, которое меняет результат в блоках «Списковые включения», «Условия», «Вложенные обходы» и «Другие коллекции». Все задания рассчитаны на CPython 3.12; отличия других реализаций или версий учитываются только там, где это прямо оговорено.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Версия: CPython 3.12. Выберите один ответ из четырёх. На 20 вопросов отведено не меньше 40 минут; код лучше читать построчно. После завершения вы увидите общий процент, четыре тематические шкалы и объяснение каждого ответа.
Вопрос 1 из 20
Какой список создаст включение?
Python
values = [1, 2, 3, 4]
result = [x * x for x in values if x % 2 == 0]
print(result)
Вопрос 2 из 20
Проследите обе позиции `if` во фрагменте. Какие два списка будут напечатаны?
Python
values = [-2, -1, 0, 1, 2]
a = [x if x > 0 else 0 for x in values]
b = [x for x in values if x > 0]
print(a, b)
Вопрос 3 из 20
В каком порядке появятся пары?
Python
pairs = [(i, j) for i in range(2) for j in range(3) if i != j]
print(pairs)
Вопрос 4 из 20
Определите тип `gen`, затем учтите его однократное потребление. Какие три значения появятся в выводе?
Python
gen = (x * 2 for x in range(3))
print(type(gen).__name__, list(gen), list(gen))
Вопрос 5 из 20
Что выведет вложенное включение?
Python
matrix = [[1, 2], [3, 4], [5, 6]]
flat = [value for row in matrix for value in row]
print(flat)
Вопрос 6 из 20
Какой результат у условного выражения?
Python
words = ["a", "abcd", "xy"]
result = [word.upper() if len(word) > 2 else word * 2 for word in words]
print(result)
Вопрос 7 из 20
Внутренний `range` зависит от текущего `i`. Какой точный список пар создаст фрагмент?
Python
result = [(i, j) for i in range(4) for j in range(i)]
print(result)
Вопрос 8 из 20
Какой словарь получится при повторных ключах?
Python
words = ["one", "two", "six", "ten"]
result = {len(word): word for word in words}
print(result)
Вопрос 9 из 20
Выражение содержит несколько ветвей, побочные эффекты и промежуточные шаги. Какое проектное решение сделает преобразование понятнее?
Вопрос 10 из 20
После включения код пытается прочитать его внутреннюю переменную `x`. Какая ошибка возникнет в Python 3?
Python
values = [x for x in range(3)]
print(x, values)
Вопрос 11 из 20
Как отфильтровать только непустые строки после strip и не вызывать strip дважды?
Вопрос 12 из 20
Что выведет транспонирование?
Python
matrix = [[1, 2, 3], [4, 5, 6]]
transposed = [[row[i] for row in matrix] for i in range(3)]
print(transposed)
Вопрос 13 из 20
Проследите вычисление остатков и удаление повторов. Какой набор значений будет выведен после сортировки?
Python
values = [1, 2, 2, 3, 4]
result = {x % 3 for x in values}
print(sorted(result))
Вопрос 14 из 20
Что произойдёт с генератором внутри sum?
Python
gen = (x for x in range(5) if x % 2)
first = sum(gen)
second = sum(gen)
print(first, second)
Вопрос 15 из 20
Какое включение строит отображение числа в его квадрат только для нечётных чисел?
Вопрос 16 из 20
Какой список получится?
Python
result = [i * j for i in range(1, 4) for j in range(1, i + 1)]
print(result)
Вопрос 17 из 20
В выражении `[f(x) for x in xs if f(x) > 0]` есть ошибка: функция `f` вызывается дважды. Какое исправление устранит повторный вызов?
Вопрос 18 из 20
Что выведет распаковка внутри включения?
Python
pairs = [(1, 2), (3, 4)]
result = [a + b for a, b in pairs]
print(result)
Вопрос 19 из 20
Какой вариант лениво берёт квадраты первых десяти чисел без создания списка квадратов?
Вопрос 20 из 20
Что произойдёт при вложенном включении с условием?
Python
values = [1, 2, 3]
result = [(a, b) for a in values for b in values if a < b]
print(result)

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу