Хабрахабр

Разминка для тех, кто умеет в Python

Мы обожаем квизы, посвященные языкам программирования. Привет! Сегодняшний квиз посвящен исключительно Python. В нашем блоге мы разместили уже целых три: первый — по Python, PHP, Golang, DevOps, второй — полностью по Go, третий — только по PHP.

(Кстати, кто едет? Предлагаем вам размяться в честь конца ещё одной летней недели и в преддверии PyCon Russia 2018. Мы там будем).

да!) и крутой мерч. Под катом — семь вопросов, советы от друга, Чапаев, отрывки из ABBA (что?

Первому, кто правильно ответит на все вопросы Python-викторины, отправим продвинутый набор Авито-мерча: толстовку, носки и холиварные кости — можно будет погадать, на каком бэкенд-языке и фронтенд-фреймворке будет написан ваш новый проект. Призы распределим между десяткой лучших. Третьему достанется тот же набор, но без футболки/толстовки. Второго участника, справившегося с заданиями, наградим холиварными костями, носками и футболкой. Среди оставшихся семи участников разыграем термобутылку с карабином, которую можно взять хоть в поход, хоть на хакатон.

image

*Во всех случаях речь про Python 3.

Вопрос 1

Какой результат будет в переменной t:

>>> t = (1, 2, [30,40])
>>> t[2] += [50, 60]

Варианты ответов:

  • вылетит TypeError, в t будет (1, 2, [30, 40, 50, 60]),
  • вылетит TypeError, в t будет (1, 2, [30, 40]),
  • (1, 2, [30, 40, 50, 60]),
  • (1, 2, [30, 40]).

Вопрос 2

Есть у тебя такая структура модулей:

foo_app/ snatch/ qwerty.py
bar_app/ snatch/ mamamia.py

Как бы так сделать, чтобы можно было в коде импортировать эти модули таким образом:

from snatch import qwerty, mamamia

Варианты ответов:

Вопрос 3

Есть скрипт:

class A: def get_some(self): super().get_some() class B: def get_some(self): print('Some') class C(A, B): def get_some(self): super().get_some() c = C()
c.get_some()

Что будет на выходе?

Варианты ответов:

  • AttributeError: 'C' object has no attribute 'get_some',
  • AttributeError: 'super' object has no attribute 'get_some',
  • Some,
  • пустота (без Чапаева).

Вопрос 4

Что будет выведено на экран при запуске такого кода:

class A: def foo(self): print('foo A') class B: def foo(self): print('foo B') class C(A, B): def foo(self): super().foo() class D(B, A): def foo(self): super().foo() class E(C, D): pass e = E()
e.foo()

Варианты ответов

  • foo A,
  • foo B,
  • TypeError: Cannot create a consistent method resolution order (MRO) for bases A, B.

Вопрос 5

Представь, у тебя есть модуль foo.py:

def bar(): print(‘Привет, друг!’)

И ты запускаешь другой скрипт:

import importlib import foo
from foo import bar input(‘Друг, нажми ввод’)
importlib.reload(foo)
bar()

Пока он ждет ввода, ты меняешь модуль foo.py:

def bar(): print(‘Пока, друг!’)

Далее ты жмешь «ввод» в foo.py, чтобы он продолжил работу и видишь...

Варианты ответов:

  • ModuleReloadedException: method bar() was reloaded,
  • Пока, друг!,
  • Привет, друг!,
  • пустоту (и опять нет Чапаева).

Вопрос 6

Что будет выведено на экран при запуске такого кода:

class A: def __init__(self): print('__init__ A', end=' ') class B: def __init__(self): print('__init__ B', end=' ') class C(A, B): pass c = C()

Варианты ответов:

  • __init__ A __init__ B
  • __init__ B __init__ A
  • __init__ A
  • __init__ B

Вопрос 7

Что будет в выводе после выполнения следующего кода?

def not_(value): return not value
result = not_(0), all(any([not_(x) for x in range(b)]) for b in range(10))
print(result)

Варианты ответов:

Если будете решать — кладите ответы под спойлер, чтобы другим участникам было интереснее решать вопросики.
И (!) не забывайте проверять личку Хабра после окончания квиза. Ответы на вопросы выложим апдейтом к посту в среду, 25 июля.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»