
Сборник тестов по основам Python
На странице представлены тесты на знание базовых теоретических основ Python. Желательно проходить их по ходу чтения учебника перед решением задач соответствующей темы.
На данный момент в сборнике представлено более 230 тестов по Питону с ответами и пояснениями в сложных случаях. Однако не забывайте, что нужно стараться получать верный результат самостоятельно. Если же количество неверных ответов по текущей теме достаточно велико, следует пройти тесты повторно.
- Введение в Пайтон
- Числа и математические выражения
- Текстовые строки
- Списки
- Кортежи
- Словари
- Множества
- Логический тип
- Приведение типов
- Инструкции присваивания
- Условная инструкция if/elif/else
- Циклы for и while
- Итерации и генераторы
- Функции
- ООП: классы и объекты
- Импорт, модули и пакеты
- Обработка исключений

Введение в Пайтон
Теоретический материал по теме можно почитать во втором и третьем параграфах нашего учебника здесь и здесь.
1.1. Выберите верные утверждения о языке программирования Python.
Варианты ответов: а) высокоуровневый, б) низкоуровневый, в) интерпретируемый, г) компилируемый. Показать решение.
Ответ. а) высокоуровневый, в) интерпретируемый.
1.2. Обязательно ли в Пайтоне объявлять тип переменной?
Варианты ответов: а) по желанию программиста, б) обязательно, в) зависит от ситуации, г) объявлять тип не нужно. Показать решение.
Ответ. г) объявлять тип не нужно.
1.3. Какие из представленных фрагментов кода являются литералами?
Варианты ответов: а) '#', б) 0.77, в) 5**2, г) b = [1, 2]. Показать решение.
Ответ. а) '#', б) 0.77.
'#' – литерал строки, 0.77 – литерал вещественного числа, 5**2 – выражение, b = [1, 2] – инструкция присваивания значения.
1.4. Какие из предлагаемых имен допустимы в Python?
Варианты ответов: а) s_5, б) _5s, в) 5_s, г) Щ5. Показать решение.
Ответ. а) s_5, б) _5s, г) Щ5.
В Питоне имена чувствительны к регистру символов, должны начинаться с буквы любого алфавита в Юникоде или символа подчеркивания (_), после чего могут следовать любые буквы, цифры или символы подчеркивания. При этом с цифры имена начинаться не должны, иначе интерпретатор не сможет отличить их от чисел.
1.5. Как будет выглядеть имя переменной в верблюжьей нотации при использовании фразы «show must go on»?
Варианты ответов: а) ShowMustGoOn, б) show_must_go_on, в) showMustGoOn, г) SHOW_MUST_GO_ON. Показать решение.
Ответ. в) showMustGoOn.
Имя переменной в верблюжей нотации будет иметь вид showMustGoOn (обычно используется для переменных и функций сторонних библиотек), при использовании змеиной нотации – show_must_go_on (используется для переменных и функций внутри Python и ее стандартной библиотеки). Для имен классов обычно используется нотация CupWords, поэтому имя будет иметь вид ShowMustGoOn.
1.6. Что по умолчанию служит концом инструкции в Python?
Варианты ответов: а) конец строки, б) запятая, в) точка, г) точка с запятой. Показать решение.
1.7. Для выделения блоков кода одного уровня вложенности в Питоне используются...
Варианты ответов: а) круглые скобки, б) квадратные скобки, в) фигурные скобки, г) идентичные отступы. Показать решение.
1.8. Какие из представленных символов или их комбинаций используются в Python для комментирования кода?
Варианты ответов: а) #, б) //, в) <!-- -->, г) /* */. Показать решение.
1.9. Чем отличаются операторы = и ==?
Варианты ответов: а) операторы эквивалентны, б) оператор = менее точный, в) оператор = присваивает значения, а == сравнивает их, г) оператор == в Питоне не используется. Показать решение.
1.10. Как в Питоне записать выражение a не равно b?
Варианты ответов: а) a <> b, б) a != b, в) a is not b, г) a ≠ b. Показать решение.
1.11. Какой параметр надо изменить, чтобы встроенная функция print() вывела переданные ей аргументы в столбик?
Варианты ответов: а) end, б) sep, в) вывод в столбик невозможен, г) значения аргументов итак всегда выводятся с новой строки. Показать решение.
1.12. Данные какого типа возвращает встроенная функция input()?
Варианты ответов: а) логический тип, б) строка, в) целое число, г) вещественное число. Показать решение.
Тесты по числам
Теоретический материал по числам, математическим операциям и модулю math можно почитать в нашем учебнике здесь.
2.1. Какой тип данных в Python представляет целые числа?
Варианты ответов: а) complex, б) float, в) int, г) bool. Показать решение.
Ответ. в) int.
2.2. Какие из представленых литералов чисел относятся к типу float?
Варианты ответов: а) 1.7+4.3j, б) 5.0, в) 88, г) -.4? Показать решение.
Ответ. б) 5.0, г) -.4.
Ноль для действительных чисел разрешается опускать, используя только точку.
2.3. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2.5, б) 2, в) 3, г) ошибка. Показать решение.

x = 5
y = 2
z = x//y
print(z)
Ответ. б) 2.
Использовался оператор деления с округлением вниз, поэтому дробная часть просто отбросилась.
2.4. Что будет выведено на экран в результате выполнения инструкции print(4 + 3.0)?
Варианты ответов: а) 7.0, б) 4 + 3.0, в) 7, г) ошибка. Показать решение.
Ответ. а) 7.0.
Результат был приведен к более общему типу, т.е. типу float.
2.5. Какое число будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2.5, б) 1, в) 0.1, г) ошибка. Показать решение.

x = 5
y = 2
z = x%y
print(z)
Ответ. б) 1.
Получили остаток от деления.
2.6. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 5, б) 0, в) 10, г) ошибка. Показать решение.

x = 5
x += x - x
print(x)
2.7. Выберите литералы чисел, представленные в шестнадцатеричной системе счисления.
Варианты ответов: а) 0X755, б) 16755, в) 0x1101, г) 0o1675. Показать решение.
2.8. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 9.0, б) 9, в) 6.0 + 3, г) ошибка. Показать решение.

x = 3
y = 3.0
z = '3'
print(x + y + z)
2.9. Какой оператор используется для получения остатка от деления в Python?
Варианты ответов: а) /, б) //, в) **, г) %. Показать решение.
2.10. Что будет выведено на экран в результате выполнения инструкции print(5**(5 - 2))?
Варианты ответов: а) 15, б) 125, в) 45.0, г) ошибка. Показать решение.
2.11. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 9.4, б) 9.35, в) 9.15, г) 9.45. Показать решение.

x = round(3.153, 2)
y = round(6.25)
print(x + y)
2.12. Какая из встроенных функций Python может быть использована для нахождения модуля числа?
Варианты ответов: а) round, б) abs, в) divmod, г) pow. Показать решение.
2.13. Выберите допустимые записи вещественного числа 0.135 в исходном коде.
Варианты ответов: а) 135E-1, б) 1.35e-1, в) .135, г) 1.35-e1. Показать решение.
Тесты по строкам
Теоретический материал по строкам можно почитать в нашем учебнике здесь.
Не забываем, что строки относятся к неизменяемому типу данных, поэтому изменить их непосредственно не получится. Но всегда можно получить измененную копию строки и заменить ею хранящуюся в переменной исходную строку.
3.1. Посчитайте количество литералов строк среди предложенных: '-23.5', '2 + 3', "яблоко", ['груша'], "[5, 7]".
Варианты ответов: а) 2, б) 3, в) 4, г) 5. Показать решение.
Ответ. в) 4.
'-23.5' и '2 + 3' – строки в одинарных кавычках, "яблоко" и "[5, 7]" – строки в двойных кавычках.
3.2. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 7 + 3, б) 10, в) 73, г) ошибка. Показать решение.

x = '7'
y = '3'
z = x + y
print(z)
Ответ. в) 73.
В результате конкатенации строк '7' + '3' получили строку '73'.
3.3. Какой из операторов используется для повторения строки в Python?
Варианты ответов: а) +, б) *, в) /, г) %. Показать решение.
Ответ. б) *.
Например, результатом выполнения инструкции 'б'*3 будет строка 'ббб'.
3.4. Какая последовательность символов представляет собой экранированную последовательность, соответствующую переводу строки?
Варианты ответов: а) \n, б) /n, в) \\n, г) //n. Показать решение.
Ответ. а) \n.
Экранированная последовательность – это специальная последовательность символов, начинающаяся со знака обратного слеша, которая обозначает символ, не всегда представимый внутри строки другими способами. Например, \n или \u000A – перевод строки, \" или \u0022 – двойная кавычка и т.д.
3.5. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 55, б) 52, в) 25, г) ошибка. Показать решение.

x = '5'
y = '2'
z = x*int(y)
print(z)
Ответ. а) 55.
Здесь строка '2' была сперва приведена к целому чилу. Поэтому в результате умножения '5'*2 была получена строка '55'.
3.6. Что будет выведено на экран в результате выполнения инструкции print("123456789"[5])?
Варианты ответов: а) 12345, б) 5, в) 6, г) ошибка. Показать решение.
3.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 33, б) 6, в) 32, г) ошибка. Показать решение.

x = '3'
y = '2'
z = int(x*y)
print(z)
3.8. Какой из методов используется для преобразования строки в верхний регистр?
Варианты ответов: а) upper(), б) capitalize(), в) lower(), г) title(). Показать решение.
3.9. Что будет выведено на экран в результате выполнения инструкции print("123456789"[:5])?
Варианты ответов: а) 12345, б) 5, в) 6, г) ошибка. Показать решение.
3.10. Что выведет на экран инструкция print('okpython.net\')?
Варианты ответов: а) okpython.net, б) okpython.net\, в) okpython.net\', г) ошибка. Показать решение.
3.11. Какой из методов используется для соединения подстрок в одну строку по заданному разделителю?
Варианты ответов: а) split(), б) join(), в) replace(), г) strip(). Показать решение.
3.12. Дана строка s = "012345". Перечислите инструкции, которые выведут на экран 3.
Варианты ответов: а) print(s[3]), б) print(s[-3]), в) print(s[3::3]), г) все предыдущие варианты. Показать решение.
3.13. Что будет выведено на экран в результате выполнения инструкции print('Гостиница 'Орбита', 3 звезды.')?
Варианты ответов: а) Гостиница Орбита, 3 звезды., б) Гостиница 'Орбита', 3 звезды., в) 'Гостиница 'Орбита', 3 звезды.', г) ошибка. Показать решение.
3.14. Что возвращает функция len() при передаче в неё строки?
Варианты ответов: а) количество слов, б) количество символов, в) количество байт, г) ошибка. Показать решение.
3.15. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) ccc, б) bbb, в) ничего, г) ошибка. Показать решение.

s = 'abc'*3
s = s[2] + s[5]
s += s[8]
print(s)
3.16. Какой из методов используется для удаления пробельных символов с начала и конца строки?
Варианты ответов: а) lstrip(), б) rstrip(), в) strip(), г) все предыдущие варианты. Показать решение.
3.17. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 6, б) 7, в) 8, г) 9. Показать решение.

s = 'bc abc aabc'
s = s.replace('a', 'bc')
s = s.replace('bc', '1')
print(len(s))
3.18. Как проверить, является ли некоторая строка s допустимым в Питоне идентификатором?
Варианты ответов: а) s is identifier, б) isidentifier(s), в) s.isidentifier, г) s.isidentifier(). Показать решение.
3.19. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 'холливуд', б) 'голливуд', в) ничего, г) ошибка. Показать решение.

s_1 = 'холливуд'
s_2 = s_1
s_2[0] = 'г'
print(s_1)
3.20. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) x + y = 12, б) x + 7 = 12, в) x + y = x + y, г) ошибка. Показать решение.

x = 5; y = 7
print(f'x + {y} = {x + y}')
Тесты по спискам
Теоретический материал по спискам можно почитать в нашем учебнике здесь.
Не забываем, что списки, в отличие от строк и кортежей, мы можем изменять непосредственно.
4.1. Какие из представленых литералов относятся к типу list?
Варианты ответов: а) ['1', '2', '3'], б) '[1, 2, 3]', в) [(1, 2, 3)], г) ([1], [2], [3]). Показать решение.
Ответ. а) ['1', '2', '3'], в) [(1, 2, 3)].
['1', '2', '3'] – список из трех строковых элементов, а [(1, 2, 3)] – список из одного элемента в виде кортежа.
4.2. Как в Пайтоне создать пустой список?
Варианты ответов: а) li = [], б) li = None, в) li = 0, г) li = list(). Показать решение.
Ответ. а) li = [], г) li = list().
4.3. Выберите верные утверждения о списках.
Варианты ответов: а) неизменяемые, б) упорядоченные, в) последовательности, г) изменяемые. Показать решение.
Ответ. б) упорядоченые, в) последовательности, г) изменяемые.
4.4. Какие объекты можно хранить в списках?
Варианты ответов: а) только числа и строки, б) только неизменяемые объекты, в) любые, кроме объектов функций, г) любые. Показать решение.
Ответ. г) любые.
4.5. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) [3], б) [1, 1, 1], в) [1, 1, 1, 1], г) ошибка. Показать решение.

li = [1]
li += li*3
print(li)
Ответ. в) [1, 1, 1, 1].
В первой инструкции был создан список с одним элементом. Во второй инструкции к нему был присоединен список [1, 1, 1], полученный в результате операции умножения li*3 (объединение с самим собой 3 раза, т.е. li + li + li).
4.6. Что будет выведено на экран в результате выполнения инструкции print([1, 2, 3, 4, 5, 6][-4])?
Варианты ответов: а) 1, б) 2, в) 3, г) ошибка. Показать решение.
4.7. Что будет выведено на экран в результате выполнения инструкции print([1, 2, 3, 4, 5, 6][:-4])?
Варианты ответов: а) [1, 2], б) 3, в) [3], г) ошибка. Показать решение.
4.8. Что задает третий параметр в срезе списка?
Варианты ответов: а) шаг среза, б) начало среза, в) конец среза, г) в срезах не указывают третий параметр. Показать решение.
4.9. Что будет выведено на экран в результате выполнения инструкции print([1, 2, 3, 4, 5, 6][::-4])?
Варианты ответов: а) 3, б) [6, 3], в) [6, 2], г) ошибка. Показать решение.
4.10. Как добавить элемент elem в конец списка li?
Варианты ответов: а) li.append(elem), б) li.insert(len(li), elem), в) li.extend([elem]), г) li += [elem]. Показать решение.
4.11. Что будет выведено на экран в результате выполнения инструкции print(['a', 'b', 'cd', 'e', 'f'][3])?
Варианты ответов: а) d, б) e, в) cd, г) c. Показать решение.
4.12. Как удалить из списка li элемент elem по его индексу i?
Варианты ответов: а) li.pop(i), б) del li[i], в) li.remove(elem), г) li.clear(). Показать решение.
4.13. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) [1, 2, 3, 4, 5], б) [1, 2, 4, 5], в) [1, 3, 4, 5], г) ошибка. Показать решение.

li = [1, 2, 3, 4, 5]
li = li[0:2] + li[3:]
print(li)
4.14. Дан список li = ['a', 'b', 'cd', 'e', 'f']. Какие инструкции выведут на экран символ d.
Варианты ответов: а) print(li[2][1]), б) print(li[2][2]), в) print(li[3]), г) print(li[-3][1]). Показать решение.
4.15. Как в Пайтоне объединить два списка в один?
Варианты ответов: а) li_1.join(li_2), б) li_1 + li_2, в) li_1.extend(li_2), г) li_1.append(li_2). Показать решение.
4.16. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) True, б) None, в) False, г) ошибка. Показать решение.

li = ['a', 'b', ['cd'], 'e', 'f']
ans = 'cd' in li
print(ans)
4.17. Как в Питоне обратить порядок элементов в списке?
Варианты ответов: а) li.reverse(), б) li = li[::-1], в) reverse(li), г) никак. Показать решение.
4.18. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) ['теплое', 'море'], б) ['холодное', 'море'], в) ['холодное', 'теплое', 'море'], г) ошибка. Показать решение.

li_1 = ['теплое', 'море']
li_2 = li_1
li_2[0] = 'холодное'
print(li_1)
4.19. Как добавить любой элемент x в конец списка li, используя срез?
Варианты ответов: а) li[len(li):] = [x], б) li[len(li):] = x, в) li[-1:] = [x], г) li[-1:] = x. Показать решение.
4.20. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) [1, 2, 3], б) [1, 2, 3, 'abc'], в) [1, 2, 3, 'a', 'b', 'c'], г) ошибка. Показать решение.

li = [1, 2, 3]
li.extend('abc')
print(li)
4.21. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) ['a', 'b'], б) ['a', 'b', 'cd'], в) ['a', 'b', 'c', 'd'], г) ошибка. Показать решение.

li = ['a', 'b']
li += 'cd'
print(li)
Тесты по кортежам
Теоретический материал по кортежам можно почитать в нашем учебнике здесь.
Не забываем, что кортежи относятся к неизменяемому типу данных, поэтому изменить их непосредственно не получится. Но всегда можно получить измененную копию кортежа и заменить ею хранящийся в переменной исходный кортеж.
5.1. Какой тип данных в Python представляет кортежи?
Варианты ответов: а) dict, б) list, в) tuple, г) set. Показать решение.
Ответ. в) tuple.
dict – словарь, list – список, set – множество.
5.2. Выберите верные утверждения о кортежах.
Варианты ответов: а) неизменяемые, б) изменяемые, в) неупорядоченые, г) упорядоченые. Показать решение.
Ответ. а) неизменяемые, г) упорядоченные.
В отличие от списков кортежи неизменяемы, т.е. добавлять в них новые элементы, а также заменять или удалять их запрещено. В тоже время кортежи упорядоченны, т.к. каждый элемент пронумерован целочисленными индексами.
5.3. Какие из представленых литералов относятся к кортежам?
Варианты ответов: а) (1,), б) '(1, 2, 3)', в) ([1, 2, 3]), г) ("Питон"). Показать решение.
Ответ. а) (1,), г) ("Питон",).
Вариант б) – строка, в) – список.
5.4. Как в Python создать пустой кортеж?
Варианты ответов: а) tpl = (), б) tpl = {}, в) tpl = tuple(), г) tpl = tuple(0). Показать решение.
Ответ. а) tpl = (), в) tpl = tuple().
Вариант б) – пустой словарь, г) – ошибка, т.к. в конструктор нужно передавать итерируемый объект.
5.5. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) (3,), б) (1, 1, 1), в) (1, 1, 1, 1), г) ошибка. Показать решение.

t = (1,)
t += t*3
del t[0]
print(t)
Ответ. г) ошибка.
Кортежи неизменяемы, а значит удалять элементы из них запрещается.
5.6. Как удалить из кортежа tpl элемент elem с индексом i?
Варианты ответов: а) tpl.pop(i), б) del tpl[i], в) tpl.remove(elem), г) никак. Показать решение.
5.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) (1,), б) (1, [2]), в) (1, [3]), г) ошибка. Показать решение.

tpl = (1, [2, 3])
del tpl[1][1]
print(tpl)
5.8. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 0----, б) 76543, в) 10987, г) ----. Показать решение.

tpl = (1, 2, ('-3-4-5-6', '-7-8-9-10'))
print(tpl[2][1][-1::-2])
Тесты по словарям
Теоретический материал по словарям можно почитать в нашем учебнике здесь.
6.1. Какой тип данных в Python представляет словари?
Варианты ответов: а) dict, б) list, в) tuple, г) set. Показать решение.
Ответ. а) dict.
list – список, tuple – кортеж, set – множество.
6.2. Какие из утверждений о словарях верны?
Варианты ответов: а) изменяемые, б) неизменяемые, в) доступ к элементам по индексу, г) доступ к элементам по ключу. Показать решение.
Ответ. а) изменяемые, г) доступ к элементам по ключу.
6.3. Какие из представленых литералов относятся к словарям?
Варианты ответов: а) {'красный', 'синий'}, б) {1: 'Январь', 2: 'Февраль'}, в) ({'name': 'Оля'}, {'age': 18}), г) {'list': [1, 2, 3]}. Показать решение.
Ответ. б) {1: 'Январь', 2: 'Февраль'}, г) {'list': [1, 2, 3]}.
Вариант а) – множество, в) – кортеж из двух словарей.
6.4. Какие операции недоступны для словарей?
Варианты ответов: а) обращение по индексу и срезы, б) конкатенация и повторение, в) создание пустого словаря, г) все вышеперечисленное. Показать решение.
Ответ. а) обращение по индексу и срезы, б) конкатенация и повторение.
6.5. Как в Питоне создать пустой словарь?
Варианты ответов: а) d = dict(), б) d = (), в) d = {}, г) d = []. Показать решение.
Ответ. а) d = dict(), в) d = {}.
Вариант б) – пустой кортеж, г) – пустой список.
6.6. Выберите верные способы создания словаря с двумя элементами.
Варианты ответов: а) d = dict(name='Eva', age=33), б) d = dict(('name', 'Eva'), ('age', 33)), в) d = dict('name'='Eva', 'age'=33), г) d = dict((name, 'Eva'), (age, 33)). Показать решение.
6.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2, б) 3, в) 4, г) ошибка. Показать решение.

d = {1: 'a', '2': ['b', {'c': 3}], (5, '6'): ('f', 'g')}
print(len(d))
6.8. Какие из представленых литералов могут быть использованы в качестве ключей словаря?
Варианты ответов: а) (1,), б) [2,], в) '3', г) -.4. Показать решение.
6.9. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {1, 1, 1}, б) {'1', '1', '1'}, в) {1: '1', 1: '1', 1: '1'}, г) ошибка. Показать решение.

d = {1: '1'}
d += d*2
print(d)
6.10. Как получить значение из словаря d по ключу key?
Варианты ответов: а) d.value(key), б) d[key], в) d.get(key), г) d.setdefault(key). Показать решение.
6.11. Как удалить значение из словаря d по ключу key?
Варианты ответов: а) del d[key], б) d.pop(key), в) d.remove(key), г) никак. Показать решение.
6.12. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {1: 'one', 2: 'два', 3: 'три'}, б) {}, в) {1: 'один', 2: 'два', 3: 'три'}, г) ошибка. Показать решение.

d = {1: 'one'}
d.update([(1, 'один'), (2, 'два')])
d[3] = 'три'
print(d)
6.13. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) ['a', 'b'], б) ['a', 'b', 'c'], в) dict_keys(['a', 'b']), г) ошибка. Показать решение.

d = {'a': 1, 'b': 2, 'c': 3}
k = d.keys()
del d['c']
print(list(k))
Тесты по множествам
Теоретический материал по множествам можно почитать в нашем учебнике здесь.
7.1. Какой тип данных в Питоне представляет множества?
Варианты ответов: а) tuple, б) list, в) dict, г) set. Показать решение.
Ответ. г) set.
7.2. Какие из утверждений о множествах верны?
Варианты ответов: а) коллекции неизменяемых объектов, б) изменяемые коллекции объектов, в) неупорядоченные коллекции объектов, г) упорядоченные коллекции объектов. Показать решение.
Ответ. а) коллекции неизменяемых объектов, б) изменяемые коллекции объектов, в) неупорядоченные коллекции объектов.
Сами множества изменять разрешается, но вот их элементы должны быть неизменяемыми типами данных. Поэтому мы можем добавить в качестве элемента число, но не список. Кроме того, множества неупорядоченные коллекции. Поэтому доступ к его элементам отсутствует как по индексам, так и по ключам.
7.3. Какие из представленых литералов относятся к типу set?
Варианты ответов: а) {'кот', "ток"}, б) "{1, 2, 3}", в) {[], (), {}, ''}, г) [{'set': {1, 2, 3}}]. Показать решение.
Ответ. а) {'кот', "ток"}, в) {[], (), {}, ''}.
Вариант б) – строка, г) – список.
7.4. Как создать пустое множество в Пайтоне?
Варианты ответов: а) st = (), б) st = set(), в) st = [], г) st = {}. Показать решение.
Ответ. б) st = set().
Вариант а) – пустой кортеж, в) – пустой список, г) – пустой словарь.
7.5. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {3}, б) {1, 1, 1}, в) {1, 1, 1, 1}, г) ошибка. Показать решение.

st = {1}
st += st*3
print(st)
Ответ. г) ошибка.
Как и для словарей, операция умножения на число у множеств не определена.
7.6. Даны два множества {'a', 'b', 'c'} и {'b', 'c', 'd'}. Какое из множеств является их пересечением?
Варианты ответов: а) {'a', 'b'}, б) {'b', 'c'}, в) {'c', 'd'}, г) {}. Показать решение.
7.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {'о', 'н', 'л', 'а', 'я'}, б) {'о'}, в) {'н', 'а'}, г) ошибка. Показать решение.

st_1 = {'о', 'н', 'а'}
st_2 = {'о', 'л', 'я'}
print(st_1 | st_2)
7.8. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {1, 2, 3}, б) {(2, 3), 1}, в) {2, 3}, г) ошибка. Показать решение.

st = set()
st.add(1)
st.add((2, 3))
print(st)
7.9. Как удалить элемент elem из множества st?
Варианты ответов: а) st.remove(elem), б) st.discard(elem), в) st.pop(elem), г) никак. Показать решение.
7.10. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {1, 2, 3, 4}, б) {(1, 2), [3, 4]}, в) [3, 4], г) ошибка. Показать решение.

st = set()
st.add((1, 2))
st.add([3, 4])
print(st)
7.11. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {'1', '2'}, б) {}, в) {1, 2, '1', '2'}, г) ошибка. Показать решение.

fst = frozenset({1, 2})
fst.clear()
fst.add('1', '2')
print(fst)
7.12. С помощью какой функции можно отсортировать элементы множества?
Варианты ответов: а) метод sort(), б) встроенная функция sorted(), в) пользовательская функция, г) такой функции нет. Показать решение.
7.13. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {1, 2, 3}, б) True, в) None, г) ошибка. Показать решение.

st_1 = {1, 2}
st_2 = st_1.add(3)
print(st_2)
Тесты по логическому типу
Теоретический материал по логическому типу данных можно почитать в нашем учебнике здесь.
8.1. Какой тип данных в Пайтоне представляет логические значения?
Варианты ответов: а) NoneType, б) bool, в) float, г) int. Показать решение.
Ответ. б) bool.
NoneType – тип NoneType, float – вещественные числа, int – целые числа.
8.2. Выберите верные варианты написания имен булевых констант.
Варианты ответов: а) TRUE, б) True, в) false, г) False. Показать решение.
Ответ. б) True, г) False.
Регистр написания имен имеет значение.
8.3. Какое значение будет иметь выражение True and False?
Варианты ответов: а) True, б) False, в) None, г) ошибка. Показать решение.
Ответ. б) False.
Еще раз посмотрите таблицу №3 параграфа.
8.4. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 1, б) 10, в) 11, г) ошибка. Показать решение.

x = 10
res = True + x*False
print(res)
Ответ. а) 1.
Булевы константы можно использовать в математических выражениях на равных с числами, оперируя True как 1, а False как 0.
8.5. Какой оператор позволяет проверить одновременное выполнение сразу нескольких условий?
Варианты ответов: а) and, б) or, в) not, г) is. Показать решение.
Ответ. а) and.
Например, True if (x in {-1, 0, 1.3}) and (x != 0) and (type(x) is int) else False.
8.6. Что выведет на экран инструкция print(False < (7 <= 10))?
Варианты ответов: а) None, б) True, в) False, г) ошибка. Показать решение.
8.7. Что выведет на экран инструкция print(11 > 0 is True)?
Варианты ответов: а) None, б) True, в) False, г) ошибка. Показать решение.
8.8. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 3 or три, б) 3, в) три, г) True. Показать решение.

x = 3
y = 'три'
print(x or y)
8.9. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) Ok!, б) not True or foo(), в) ничего, г) ошибка. Показать решение.

def foo(): print('Ok!')
not True or foo()
Тесты на приведение типов
Теоретический материал по приведению типов можно почитать в нашем учебнике здесь.
9.1. Каким будет результат преобразования типа для инструкции bool(-1)?
Варианты ответов: а) False, б) True, в) None, г) 1. Показать решение.
Ответ. б) True.
Среди чисел только нулевые значения преобразуются в False.
9.2. Каким будет результат преобразования типа для инструкции str([1, '2', 3])?
Варианты ответов: а) [1, '2', 3], б) "1, '2', 3", в) "[1, '2', 3]", г) ['1', '2', '3']. Показать решение.
Ответ. в) "[1, '2', 3]".
Будет выведено строковое представление объекта, в данном случае списка.
9.3. Каким будет результат преобразования типа для инструкции float('-42 ')?
Варианты ответов: а) -42, б) -42.0, в) -4.2e-1, г) ошибка. Показать решение.
Ответ. б) -42.0.
Если строка содержит верное представление целого числа в десятичной системе счисления, то интерпретатор в процессе приведения строки к вещественному типу вернет это число, добавив к нему нулевую дробную часть.
9.4. Каким будет результат преобразования типа для инструкции bool(' False ')?
Варианты ответов: а) False, б) 'False', в) True, г) ошибка. Показать решение.
Ответ. в) True.
Непустые строки преобразуются в True.
9.5. Каким будет результат преобразования типа для инструкции tuple(" hello ")?
Варианты ответов: а) (' ', 'h', 'e', 'l', 'l', 'o', ' '), б) ('h', 'e', 'l', 'l', 'o'), в) (" hello ",), г) (" hello "). Показать решение.
Ответ. а) (' ', 'h', 'e', 'l', 'l', 'o', ' ').
Все элементы итерируемого объекта, т.е. символы переданной строки, стали элементами кортежа.
9.6. Каким будет результат преобразования типа для инструкции set([1, 2, 3, 3])?
Варианты ответов: а) {1, 2, 3, 3}, б) {1, 2, 3}, в) [1, 2, 3, 3], г) [1, 2, 3]. Показать решение.
9.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2.0, б) 2, в) 0.0, г) 0. Показать решение.

res = int(True) + float(True)
print(res)
9.8. Каким будет результат преобразования типа для инструкции int(-0.319e2)?
Варианты ответов: а) 0, б) -3, в) -31, г) ошибка. Показать решение.
9.9. Каким будет результат преобразования типа для инструкции list({'a': 1, 'b': 2, 'c': 3})?
Варианты ответов: а) ['a', 'b', 'c'], б) [1, 2, 3], в) [('a', 1), ('b', 2), ('c', 3)], г) ошибка. Показать решение.
9.10. Каким будет результат преобразования типа для инструкции dict(['a', 'b'])?
Варианты ответов: а) {'a': None, 'b': None}, б) {'a': False, 'b': False}, в) {'a': True, 'b': True}, г) ошибка. Показать решение.
Тесты по инструкции присваивания
Теоретический материал по инструкциям присваивания можно почитать в нашем учебнике здесь.
10.1. Какой из представленных вариантов соответствует позиционной инструкции присваивания?
Варианты ответов: а) b = [1, 2], б) a += [1, 2], в) a = b = [1, 2], г) a, b = [1, 2]. Показать решение.
Ответ. г) a, b = [1, 2].
Позиционное присваивание связывает объекты последовательностей справа от оператора присваивания с именами, перечисляемыми слева от него. При этом присваивание выполняется слева направо согласно местоположениям имен и соответствующих им объектов.
10.2. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 10, б) 20, в) 30, г) ошибка. Показать решение.

x = 10
y = x
x = 20
print(y)
Ответ. а) 10.
Сперва переменная x хранила ссылку на объект целого числа 10 в памяти. Далее, в результате присваивания, ссылку на объект получила еще и переменная y. В результате на неизменяемый объект в памяти стало указывать уже две ссылки. Но ниже переменной x было присвоено новое значение, точнее новая ссылка на другой объект целого числа 20. Однако объект числа 10 при этом из памяти не удалился, ведь ссылка на него осталась еще в переменной y, что и подтвердил вывод инструкции print(y).
10.3. Какой оператор используется для присваивания значения переменной внутри выражения?
Варианты ответов: а) =, б) ==, в) :=, г) +=. Показать решение.
Ответ. в) :=.
Был введен в Python 3.8.
10.4. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 10, б) [1, 2, 3], в) [10, 2, 3], г) ошибка. Показать решение.

a = [1, 2, 3]
b = a
a[0] = 10
print(b)
Ответ. в) [10, 2, 3].
В отличие от второго теста, здесь переменные ссылаются на один и тот же изменяемый объект. Поэтому все изменения в этом объекте (списке) будут отслеживаться сразу всеми переменными, хранящими на него ссылку.
10.5. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) (1, 2), б) (2, 1), в) (4, 3), г) (3, 4). Показать решение.

x = (1, 2)
y = (3, 4)
x, y = y, x
print(x)
Ответ. в) (3, 4).
В результате позиционного присваивания происходит обмен значениями за счет создания временного кортежа ((3, 4), (1, 2)).
10.6. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) [1, 2], б) [10, 2], в) [], г) ошибка. Показать решение.

x = [1, 2]
y = x[:]
x[0] = 10
print(y)
10.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 3, б) 6, в) 7, г) ошибка. Показать решение.

a, b, *c = [1, 2, 3, 4, 5]
a += b + c[1]
print(a)
10.8. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {1, 2}, {1, 2}, {1, 2}, б) {1}, {2}, {}, в) {1}, {1, 2}, {}, г) ошибка. Показать решение.

a = b = c = set()
a |= {1}
b |= {2}
print(a, b, c, sep=', ')
10.9. Какие из представленных фрагментов кода содержат ошибки?
Варианты ответов: а) x, y = [3, '3'], б) x, *y = 1, 2, 3, в) *x, = 1, 2, 3, г) x, *y, *z = 1, 2, 3, 4. Показать решение.
Тесты по условной инструкции
Теоретический материал по условной инструкции можно почитать в нашем учебнике здесь.
11.1. Какие из частей условной инструкции не являются обязательными?
Варианты ответов: а) if, б) elif, в) else, г) все части необязательны. Показать решение.
Ответ. б) elif, в) else.
Блоков elif может быть как несколько, так и вообще ниодного. Блок else может отсутствовать, но если он используется, то только один.
11.2. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) a>b, б) a>=b, в) a<b, г) a<=b. Показать решение.

a, b = 5, 10
if a>b:
print("a>b")
else:
print("a<=b")
Ответ. г) a<=b.
Поскольку условие блока if оказалось ложным, сработал блок else.
11.3. Какой из представленных вариантов можно отнести к верному формату представления условной инструкции?
Варианты ответов: а) if/elseif/else, б) if/elif/else, в) if/else/elif, г) A = Y if X else Z. Показать решение.
Ответ. б) if/elif/else.
Вариант г) соответствует верному формату трехместного выражения if/else. Но в тесте требуется найти верный формат именно инструкции.
11.4. Сколько условий допускается для проверки внутри одной условной конструкции?
Варианты ответов: а) 1, б) 2, в) не более 100, г) любое количество. Показать решение.
Ответ. г) любое количество.
Просто следует использовать требуемое количество блоков elif.
11.5. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 1-й разряд, б) 2-й разряд, в) 3-й разряд, г) не присваивается. Показать решение.

очки = 73
if очки >= 90:
разряд = "1-й разряд"
elif очки >= 80:
разряд = "2-й разряд"
elif очки >= 70:
разряд = "3-й разряд"
else:
разряд = "не присваивается"
print(разряд)
Ответ. в) 3-й разряд.
11.6. Какой из предлагаемых операторов можно использовать для инвертирования условия в инструкции if?
Варианты ответов: а) and, б) or, в) not, г) is. Показать решение.
11.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 1, б) 2, в) 3, г) ошибка. Показать решение.

res = 0
if []: res += 1
if False: res += 1
if not None: res += 1
if -1: res += 1
print(res)
11.8. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) None, б) True, в) False, г) ошибка. Показать решение.

s = ''
if s:
if 'a' in s:
res = True
else:
res = False
else:
res = None
print(res)
11.9. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) -8, б) -2, в) 2, г) ошибка. Показать решение.

x, y = -5, -3
res = (-1*x if x<0 else x) + y
print(res)
Тесты по циклам for и while
Теоретический материал по циклам можно почитать в нашем учебнике здесь.
12.1. Какие из представленных операторов представляют циклы в Питоне?
Варианты ответов: а) if, б) while, в) switch, г) for. Показать решение.
Ответ. б) while, г) for.
switch в Питоне вообще отсутствует.
12.2. Какой из следующих вариантов можно использовать для организации бесконечного цикла?
Варианты ответов: а) while True:, б) while 1:, в) for i in range(inf):, г) все вышеуказанные. Показать решение.
Ответ. а) while True:, б) while 1:.
1 и True взаимозаменяемы.
12.3. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 3, б) (3), в) 1 2 3 , г) ошибка. Показать решение.

for i in (3):
print(i, end=' ')
Ответ. г) ошибка.
(3) – это не кортеж с одним элементом, а просто число в скобках, т.е. неитерируемый объект.
12.4. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) -1 -2 -3, б) 0 -1 -2 -3, в) -1 -2 -3, г) 0 -1 -2. Показать решение.

for i in range(3):
print(-i, end=' ')
Ответ. г) 0 -1 -2.
Функция range() в нашем случае вернет объект с последовательностью из трех чисел от нуля до двух. А цикл for выведет их на экран с противоположным знаком.
12.5. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 0 1 2 3 4 5, б) 1 2 3 4 5, в) a b c d e f, г) ошибка. Показать решение.

li = ['12345', 'abcdef']
for elem in li[0]:
print(elem, end=' ')
Ответ. б) 1 2 3 4 5.
Осуществили итерацию по символам строки, которая является первым элементом списка.
12.6. Какой из следующих операторов предназначен для прерывания цикла?
Варианты ответов: а) pass, б) continue, в) break, г) else. Показать решение.
12.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) a (b, c) d (e, f), б) a ('b', 'c') d ('e', 'f'), в) a [b, c] d [e, f], г) a ['b', 'c'] d ['e', 'f']. Показать решение.

d = [('a', 'b', 'c'), ('d', 'e', 'f')]
for x, *y in d:
print(x, y, end=' ')
12.8. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 1 2 3, б) 1 2 3 4, в) 1 2 3 4 5, г) ошибка. Показать решение.

k = 1
while k <= 5:
if k > 3: break
print(k, end=' ')
k += 1
12.9. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 1 2 3 4 5, б) 0 1 2, в) 0 1 2 3, г) 0 1 2 4 5. Показать решение.

k = 0
while True:
if k > 5: break
if k == 3:
k += 1
continue
print(k, end=' ')
k += 1
12.10. Какой из следующих операторов можно использовать для выполнения блока кода после завершения цикла?
Варианты ответов: а) pass, б) continue, в) break, г) else. Показать решение.
12.11. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2 1 0, б) 3 2 1 0, в) 3 2 1 0 0, г) ошибка. Показать решение.

k = 4
while k:
k -= 1
print(k, end=' ')
if k>2: continue
else:
print(0)
12.12. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2 1 2 1, б) 2 1 2 1 2 1, в) ничего, г) ошибка. Показать решение.

k = 1
while True:
for n in range(2, 0, -1):
print(n, end=' ')
k += 1
if k == 3: break
12.13. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2 1 2 1, б) 2 1 2 1 2 1, в) ничего, г) ошибка. Показать решение.

k = 1
while True:
for n in range(2, 0, -1):
print(n, end=' ')
if k == 3: break
k += 1
Тесты на итерации и генераторы
Теоретический материал по итерациям и генераторам можно почитать в нашем учебнике здесь.
13.1. Какие из предложенных вариантов объектов относятся к итерируемым?
Варианты ответов: а) 'abc', б) (25,), в) 321, г) {'a': 1}. Показать решение.
Ответ. а) 'abc', б) (25,), г) {'a': 1}.
Строки хотя и относятся к неизменяемому типу данных, но дают доступ к своим символам. А вот пройтись по цифрам числа напрямую не получится.
13.2. С помощью какой функции можно преобразовать итерируемый объект в итератор?
Варианты ответов: а) iter, б) next, в) list, г) никак. Показать решение.
Ответ. а) iter.
Например, li_iter = iter([1, 2, 3]). Что касается встроенной функции next, то она используется для получения следующего элемента полученного итератора.
13.3. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) b, б) cd, в) True, г) ошибка. Показать решение.

li = ['ab', 'cd', 'ef']
li_iter = iter(li)
next(li_iter)
print(next(li_iter))
Ответ. б) cd.
Встроенная функция next используется для получения следующего элемента полученного итератора. Следовательно в ходе первого ее применения будет возвращен первый элемент итератора (на экран мы его не выводим), а в ходе второго вызова – второй элемент, который и будет выведен на экран функцией print.
13.4. Что произойдет, если попытаться получить элемент из итератора, который исчерпал все свои элементы?
Варианты ответов: а) будет возвращено None, б) будет возвращен пустой кортеж, в) будет брошено исключение StopIteration, г) будет возвращено False. Показать решение.
Ответ. в) будет брошено исключение StopIteration.
13.5. Какая из конструкций вернет готовый итератор?
Варианты ответов: а) {x for x in 'abc'}, б) (x for x in 'abc'), в) [x for x in 'abc'], г) {x: None for x in 'abc'}. Показать решение.
Ответ. б) (x for x in 'abc').
Остальные генераторы вернут множество, список и словарь, итераторы которых сперва придется получить при помощи функции iter.
13.6. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2, б) 3, в) 4, г) ошибка. Показать решение.

g_1 = (x for x in range(2, 5))
g_2 = [x+1 for x in range(2, 5)]
res = next(g_1) + next(g_2)
print(res)
13.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 4, б) 3, в) 2, г) 1. Показать решение.

def f_2(n):
for i in range(1, n+1):
yield i
gen = f_2(30)
res = next(gen) + next(gen) + next(f_2(30))
print(res)
Тесты по функциям
Теоретический материал по функциям можно почитать в нашем учебнике здесь.
14.1. Какая инструкция используется в Python для определения функций?
Варианты ответов: а) df, б) def, в) dfn, г) define. Показать решение.
Ответ. б) def.
Остальные имена в Пайтоне отсутствуют вообще.
14.2. Что возвращает функция, в которой отсутствует инструкция return?
Варианты ответов: а) объект функции, б) None, в) False, г) ничего. Показать решение.
Ответ. в) None.
Технически все равно будет возвращено None. Проверить легко, использовав, например, вызов пустой функции def func(): pass в инструкции print(func()).
14.3. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) True, б) None, в) ничего, г) ошибка. Показать решение.

def my_func():
print(True)
my_func
Ответ. в) ничего.
Ничего на экран выведено не будет, т.к. вызов функции осуществлен не был. Для этого нужно было к имени функции добавить скобки. А так в код программы было просто вписано имя, ссылающееся на объект ранее определенной функции, что вполне себе разрешено и ошибки не вызовет.
14.4. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 1 2, б) 2 1, в) 1, г) ошибка. Показать решение.

def my_func_1(): print(1, end=' ')
my_func_2()
def my_func_2(): print(2, end=' ')
my_func_1()
Ответ. г) ошибка.
Не забываем, что функции можно вызывать только после их объявления. Если ход выполнения скрипта не дошел до места определения функции, будет брошено исключение. Это касается и объявлений функций внутри условных инструкций.
14.5. Какой из предлагаемых вариантов является допустимым способом передачи аргументов функции?
Варианты ответов: а) по порядку, б) по ключевому слову, в) по умолчанию, г) все вышеуказанные. Показать решение.
Ответ. г) все вышеуказанные.
Еще раз загляните в пункт нашего учебника «Аргументы функций».
14.6. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 17, б) 16, в) 15, г) ошибка. Показать решение.

def f_1(a, b):
return a + b
def f_2(a, b=3, c=4):
return a + b + c
res = f_1(1, 2) + f_2(5, 5)
print(res)
14.7. Выберите верные варианты вызова функции, определяемой инструкцией def func(x, y, z): pass?
Варианты ответов: а) func(x, y=2, z=5), б) func(x=8, y, z), в) func(x=8, y=2, z), г) func(x, y, z=5). Показать решение.
14.8. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 14, б) 15, в) 16, г) ошибка. Показать решение.

def f_1(a, b=2):
return a + b
def f_2(a, b, c=3):
return a + b + c
res = f_1(b=1, 2) + f_2(3, 4, c=5)
print(res)
14.9. Какой из предложенных вариантов заголовка функции может использоваться для определения функции, принимающей переменное число аргументов?
Варианты ответов: а) def func_name(*args):, б) def func_name(**kwargs):, в) def func_name(*args, **kwargs):, г) все вышеуказанные. Показать решение.
14.10. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 6, б) [1, 2, 3], в) (1, 2, 3), г) ошибка. Показать решение.

def f_1(a, *b):
return a + b
print(f_1(1, 2, 3))
14.11. Выберите верные варианты вызова функции, определяемой инструкцией def func(x, *y, z): pass?
Варианты ответов: а) func(1, 2, 3), б) func(1, 2, z=3), в) func(1, z=3), г) func(z=3, 1, 2). Показать решение.
14.12. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) (1,) {'x': 3, 'y': 4}, б) 1, 3, 4, в) (1, 3, 4), г) ошибка. Показать решение.

def func(*a, **b):
print(a, b)
func(1, x=3, y=4)
14.13. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 10, б) 20, в) 30, г) ошибка. Показать решение.

x = 10
def func():
global x
x = 20
func()
print(x)
14.14. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 20, б) 30, в) ничего, г) ошибка. Показать решение.

def func_1():
x = 20
def func_2():
nonlocal x
x = 30
print(x)
func_1()
14.15. Какой из предлагаемых операторов можно использовать для создания анонимной функции?
Варианты ответов: а) def, б) lambda, в) yield, г) все вышеуказанные. Показать решение.
14.16. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 10, б) 20, в) 30, г) ошибка. Показать решение.

x = 10
def func_1():
x = 20
def func_2():
global x
x = 30
func_2()
func_1()
print(x)
14.17. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 4, б) 4.0, в) None, г) ошибка. Показать решение.

ld = lambda x, y=5: x/y if y != 0 else None
print(ld(20))
14.18. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 9, б) 6.0, в) 9.0, г) ошибка. Показать решение.

ld = lambda x: if x>0: x**2
print(ld(3.0))
14.19. Какие функции в Питоне называют рекурсивными?
Варианты ответов: а) функция, которая вызывает саму себя внутри своего тела, б) функция, которая вызывает другую функцию внутри своего тела, в) функция, которая одновременно не имеет параметров и возвращаемого значения, г) рекурсивные функции в Пайтоне запрещены. Показать решение.
14.20. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 0, б) 25, в) 120, г) ошибка. Показать решение.

def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n*factorial(n - 1)
print(factorial(5))
14.21. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 3 + 5, б) 35, в) 3 + '''5''', г) ошибка. Показать решение.

def f(x):
'''5'''
return x
res = f('3') + f.__doc__
print(res)
Тесты по ООП
Теоретический материал по объектно-ориентированному программированию можно почитать в нашем учебнике здесь.
15.1. Что такое ООП?
Варианты ответов: а) операторно-ориентированное программирование, б) основы объектного программирования, в) оптимизационно-ориентированное программирование, г) объектно-ориентированное программирование. Показать решение.
Ответ. г) объектно-ориентированное программирование.
15.2. Как называется механизм ООП, который позволяет объединять данные и методы, работающие с этими данными, в единый объект, скрывая при этом детали реализации от пользователя?
Варианты ответов: а) полиморфизм, б) инкапсуляция, в) наследование, г) композиция. Показать решение.
Ответ. б) инкапсуляция.
15.3. Какое ключевое слово используется в Python для определения классов?
Варианты ответов: а) class, б) cls, в) object, г) obj. Показать решение.
Ответ. a) class.
15.4. Какой стиль именования классов рекомендуется в руководстве PEP 8 по оформлению кода на Python?
Варианты ответов: а) camelCase, б) CapWords, в) snake_case, г) ALL_CAPS. Показать решение.
Ответ. б) CapWords.
15.5. Какой оператор используется для доступа к атрибуту объекта или класса в Python?
Варианты ответов: а) ->, б) ::, в) ., г) []. Показать решение.
Ответ. в) ..
15.6. Укажите специальный метод, который используется для инициализации исходными данными вновь создаваемых экземпляров класса.
Варианты ответов: а) __construct__, б) __new__, в) __init__, г) __start__. Показать решение.
15.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 1, б) 2, в) 3, г) ошибка. Показать решение.

class Test:
def __init__(self, x=1):
self.x = x
t_1 = Test()
t_2 = Test(2)
print(t_1.x + t_2.x)
15.8. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 25, б) 30, в) 55, г) ошибка. Показать решение.

class Person:
def set_age(self, age):
self.age = age
ivan = Person(25)
ivan.set_age(30)
print(ivan.age)
15.9. Перечислите допустимые способы изменения значения атрибута объекта в Python.
Варианты ответов: а) obj.attr = value, б) setattr(obj, attr_name, value), в) obj.setattr(attr_name, value), г) все вышеперечисленные. Показать решение.
15.10. Укажите допустимые способы удаления атрибута объекта в Python.
Варианты ответов: а) del obj.attr, б) obj.del(attr_name), в) obj.delattr(attr_name), г) delattr(obj, attr_name). Показать решение.
15.11. Какой атрибут используется для получения словаря, содержащего атрибуты объекта или класса?
Варианты ответов: а) __attrs_, б) __items__, в) __dict__, г) __vars__. Показать решение.
15.12. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) {'name': 'ivan', 'age': 25}, б) {'age': 25}, в) {'name': 'ivan'}, г) ошибка. Показать решение.

class Person:
def set_age(self, age):
self.age = age
ivan = Person()
setattr(ivan, 'name', 'ivan')
ivan.set_age(25)
print(ivan.__dict__)
del ivan.age
15.13. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 1 + 1, б) 2, в) ничего, г) ошибка. Показать решение.

class Test:
x = 1
t = Test()
print(Test.x + t.x)
15.14. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2, б) 4, в) 6, г) ошибка. Показать решение.

class Test:
x = 1
def __init__(self, x):
self.x = x
t = Test(3)
print(Test.x + t.x)
15.15. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2, б) 3, в) 4, г) ошибка. Показать решение.

class Test:
x = 1
t = Test()
t.x = 2
del t.x
print(Test.x + t.x)
15.16. Какой декоратор используется для определения метода класса и позволяет работать с атрибутами класса, а не с атрибутами объекта?
Варианты ответов: а) @staticmethod, б) @classmethod, в) @property, г) @operator. Показать решение.
15.17. Перечислите верные варианты вызова метода класса в Пайтоне.
Варианты ответов: а) obj.method(cls), б) Class.method(cls), в) obj.method(), г) Class.method(). Показать решение.
15.18. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 0, б) 1, в) 2, г) ошибка. Показать решение.

class Test:
@classmethod
def m_1(cls):
return (1 if 1>0 else 0)
obj = Test()
print(obj.m_1() + Test.m_1())
15.19. Перечислите верные варианты вызова статического метода в Python.
Варианты ответов: а) obj.method(), б) Class.method(), в) Class.method(obj), г) method(). Показать решение.
15.20. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 1, б) 2, в) 3, г) ошибка. Показать решение.

class Test:
def m_1():
return (1 if 1>0 else 0)
@staticmethod
def m_2():
return (2 if 2>0 else 0)
obj = Test()
print(obj.m_1() + Test.m_2())
15.21. Как в Питоне принято обозначать атрибуты класса, предназначенные для внутреннего (служебного) использования?
Варианты ответов: а) _, б) __, в) @, г) никак. Показать решение.
15.22. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 5, б) False, в) None, г) ошибка. Показать решение.

class Test:
def __init__(self, x):
self._x = x
obj = Test(5)
print(obj._x)
15.23. Как в Питоне принято обозначать приватные атрибуты класса?
Варианты ответов: а) _, б) __, в) @, г) никак. Показать решение.
15.24. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 5, б) False, в) None, г) ошибка. Показать решение.

class Test:
def __init__(self, x):
self.__x = x
obj = Test(5)
print(obj.__x)
15.25. Какая из встроенных функций предназначена для создания управляемых атрибутов класса?
Варианты ответов: а) staticmethod, б) classmethod, в) property, г) setattr. Показать решение.
15.26. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 3, б) 4, в) 5, г) ошибка. Показать решение.

class Test:
@property
def attr_x(self):
return self.__x
@attr_x.setter
def attr_x(self, x):
self.__x = 3
obj = Test()
obj.attr_x = 4
obj.attr_x += 1
print(obj.attr_x)
15.27. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 7, б) Атрибут удален!, в) ничего, г) ошибка. Показать решение.

class Test:
@property
def attr_x(self):
return self.__x
@attr_x.setter
def attr_x(self, x):
self.__x = x
@attr_x.deleter
def del_attr_x(self):
del self.__x
print('Атрибут удален!')
obj = Test()
obj.attr_x = 7
del obj.attr_x
15.28. Укажите верные варианты вызова метода method суперкласса A из его дочернего подкласса B.
Варианты ответов: а) super().method(), б) super(B, self).method(), в) super(A, self).method(), г) super(B, method). Показать решение.
15.29. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 3, б) 4, в) 5, г) ошибка. Показать решение.

class A:
def m_s(self):
return 1
class B:
def m_s(self):
return 2
class C(B, A):
def m_sub(self):
return 3
obj = C()
print(obj.m_s() + obj.m_sub())
15.30. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 2, б) 3, в) 4, г) ошибка. Показать решение.

class A:
def set_1(self):
self.__x = 1
return self.__x
class B:
def set_2(self):
self.__x = 2
return self.__x
class C(A, B): pass
obj = C()
print(obj.set_1() + obj.set_2())
15.31. Имена магических методов в Питоне выделяются следующим образом:
Варианты ответов: а) начинаются с одного символа подчеркивания, б) начинаются с двух символов подчеркивания, в) начинаются и заканчиваются одним символом подчеркивания, г) начинаются и заканчиваются двумя символами подчеркивания. Показать решение.
15.32. Разрешается ли наследование магических методов, а также их переопределение в подклассах?
Варианты ответов: а) не разрешается, б) разрешается, в) разрешается только наследование, г) разрешается только переопределение. Показать решение.
15.33. Какой магический метод отвечает за операцию сложения?
Варианты ответов: а) __sum__, б) __concat__, в) __add__, г) __plus__. Показать решение.
15.34. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 3, б) 4, в) None, г) ошибка. Показать решение.

class N:
def __init__(self, n):
self._n = n
def __mul__(self, x):
return self._n + x
print(N(1)*3)
15.35. Какой базовый класс модуля abc стандартной библиотеки может быть использован для создания абстрактных классов в Python?
Варианты ответов: а) abc, б) __abc__, в) Abc, г) ABC. Показать решение.
15.36. Укажите верный декоратор модуля abc стандартной библиотеки, который может быть использован для создания абстрактных методов?
Варианты ответов: а) @abstractmethod, б) @abstract_method, в) @abstract, г) @ABSTRACT. Показать решение.
15.37. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) Питоша, б) False, в) None, г) ошибка. Показать решение.

from abc import ABC, abstractmethod
class Test(ABC):
@abstractmethod
def set_name(self, name):
self.name = name
obj = Test()
obj.set_name('Питоша')
print(obj.name)
15.38. Какой магический метод используется для определения деструктора?
Варианты ответов: а) __del__, б) __delete__, в) __destroy__, г) __remove__. Показать решение.
Тесты на импорт, модули и пакеты
Теоретический материал по импортированию, модулям и пакетам можно почитать в нашем учебнике здесь.
16.1. Какое ключевое слово используется для импорта модуля в Python?
Варианты ответов: а) import, б) include, в) load, г) require. Показать решение.
Ответ. а) import.
16.2. Как импортировать модуль module под другим именем (псевдонимом) name?
Варианты ответов: а) import module with name, б) import module as name, в) import module by name, г) никак. Показать решение.
16.3. Как импортировать из модуля module лишь одно конкретное имя (атрибут) name?
Варианты ответов: а) name import from module, б) import name from module, в) from module import name, г) никак. Показать решение.
16.4. Как импортировать из модуля module сразу все имена (атрибуты)?
Варианты ответов: а) import all from module, б) from module import all, в) from module import *, г) никак. Показать решение.
16.5. Что содержится в переменной sys.path?
Варианты ответов: а) кортеж строк с путями поиска модулей, б) список строк с путями поиска модулей, в) строка с путем к интерпретатору, г) строка с путем к текущему модулю. Показать решение.
16.6. Что представляют собой строки в файле *.pth?
Варианты ответов: а) абсолютные или относительные пути к каталогам и файлам, б) имена модулей или пакетов, в) инструкции импорта модулей или пакетов, г) комментарии с именами модулей или пакетов. Показать решение.
16.7. Как в Пайтон создать пакет модулей?
Варианты ответов: а) создать папку с любым именем и поместить в неё файлы модулей, б) создать папку с файлом __package__.py и поместить в неё файлы модулей, в) создать папку с файлом __main__.py и поместить в неё файлы модулей, г) создать папку с файлом __init__.py и поместить в неё файлы модулей. Показать решение.
16.8. С помощью какой инструкции можно импортировать модуль module из пакета package?
Варианты ответов: а) import package.module, б) import package/module, в) from package import module, г) все вышеперечисленные варианты. Показать решение.
16.9. Укажите верный вариант импортирования относительно пакета модуля foo, находящегося в том же пакете spam, что и текущий модуль?
Варианты ответов: а) import foo, б) import .foo, в) from . import foo, г) from ..spam import foo. Показать решение.
16.10. Пусть в некотором пакете расположены подпакеты spam и spam_2. Укажите верный вариант импортирования относительно пакета модуля foo, находящегося в каталоге spam, если текущий модуль расположен в каталоге spam_2.
Варианты ответов: а) from . import foo, б) from .. import foo, в) from .spam import foo, г) from ..spam import foo. Показать решение.
16.11. Как предотвратить импортирование некоторых имен из модуля module инструкцией from module import *?
Варианты ответов: а) начинать имена переменных, запрещенных к импорту инструкцией from module import *, символом нижнего подчеркивания, б) указать имена, разрешенные к импорту инструкцией from module import *, в списке __all__ на верхнем уровне модуля, в) указать имена, разрешенные к импорту инструкцией from module import *, в списке __all__ на верхнем уровне файла инициализации __init__.py пакета, г) запрет на импорт имен данной инструкцией в Пайтоне не предусмотрен. Показать решение.
16.12. Укажите верные варианты перезагрузки ранее импортированного модуля module.
Варианты ответов: а) импортировать и вызвать функцию reload(module), б) использовать метод module.reload(), в) повторно использовать инструкцию import module, г) перезагрузка модулей в Питоне запрещена. Показать решение.
16.13. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) 3.141592653589793, б) 3,14, в) None, г) ошибка. Показать решение.

from importlib import import_module
m = import_module(math)
print(round(m.pi, 2))
16.14. Какой атрибут хранит путь к файлу текущего модуля?
Варианты ответов: а) __name__, б) ____, в) __path__, г) __file__. Показать решение.
Тесты на обработку исключений
Теоретический материал по обработке исключений можно почитать в нашем учебнике здесь.
17.1. Какая составная инструкция используется в Python для обработки исключений?
Варианты ответов: а) if/elif/else, б) try/except/else/finally, в) for/in, г) with/as. Показать решение.
Ответ. б) try/except/else/finally.
17.2. В каком случае выполняется код блока else составной инструкции try/except/else/finally?
Варианты ответов: а) при отсутствии исключений в блоке try, б) при отсутствии блоков except, в) после выполнения инструкций одного из блоков except, г) всегда. Показать решение.
17.3. В каком случае выполняется код блока finally составной инструкции try/except/else/finally?
Варианты ответов: а) при отсутствии исключений в блоке try, б) при возникновении исключений в блоке try, в) при отсутствии блока else, г) всегда. Показать решение.
17.4. Перечислите верные форматы использования инструкции try.
Варианты ответов: а) try/except, б) try/else, в) try/finally, г) try/else/finally. Показать решение.
17.5. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) Все Ок?, б) Да, все ОК!, в) Нет, все плохо!, г) ничего. Показать решение.

try:
printt('Все Ок?')
except Exception as err:
print('Нет, все плохо!')
else:
print('Да, все ОК!')
finally:
pass
17.6. Имеется ли в Питоне возможность вызывать исключения принудительно?
Варианты ответов: а) использовать инструкцию assert, б) использовать инструкцию raise, в) использовать инструкцию try, г) такая возможность отсутствует. Показать решение.
17.7. Что будет выведено на экран в результате выполнения кода условия?
Варианты ответов: а) Деление на ноль!, б) 5, в) 5.0, г) ничего. Показать решение.

try:
res = 10/2
raise ZeroDivisionError
except Exception as err:
print('Деление на ноль!')
else:
print(res)