Hola Nos encantan los cuestionarios sobre lenguajes de programación. Ya hemos publicado tres en nuestro blog: el primero , en Python, PHP, Golang, DevOps, el segundo , completamente en Go, el tercero , solo en PHP. La prueba de hoy está dedicada exclusivamente a Python.
Te invitamos a calentar en honor al final de otra semana de verano y en la víspera de PyCon Russia 2018 . (Por cierto, ¿quién va? Estaremos allí).
Debajo del corte: siete preguntas, consejos de un amigo, Chapaev, extractos de ABBA ( ¿qué? ¡Sí! ) Y una merch genial.
UPD: Hemos terminado de aceptar respuestas. ¡Gracias a todos los que participaron! Las respuestas a las preguntas están dentro del texto, y los ganadores y los ganadores de los premios están debajo del spoiler.
Ganadores y ganadores del concursoGanador
Vadem
Galardonados
Segundo lugar: acerikfy
Tercer lugar: histiofrina
Cuarto - décimo lugar: Swezy_ua , SlonPC , noth , IIRoadRunnerII , term1nal , alexchromets , Tihon_V .
Bono
Tantos participantes dieron respuestas correctas que decidimos jugar aleatoriamente otros cinco pares de medias entre ellos. Calcetines geniales de Avito reciben: sunman , grt_pretender , Vash , ipatov_dn , institoris
Draw Record

Premios
Los premios se distribuirán entre los diez primeros. El primero en responder correctamente a todas las preguntas del cuestionario Python, le enviaremos un kit avanzado de Avito-merch: una sudadera, calcetines y huesos huecos: puede adivinar en qué lenguaje de fondo y marco frontend se escribirá su nuevo proyecto. El segundo participante que completó las tareas será premiado con holivones, calcetines y una camiseta. El tercero obtendrá el mismo conjunto, pero sin una camiseta / sudadera. Entre los siete participantes restantes , jugaremos una botella térmica con una carabina, que se puede tomar incluso en una caminata, al menos en un hackathon.

Preguntas
* En todos los casos, estamos hablando de Python 3.
Pregunta 1
¿Cuál será el resultado en la variable t
:
>>> t = (1, 2, [30,40]) >>> t[2] += [50, 60]
Opciones de respuesta:
TypeError
volará, en t
será (1, 2, [30, 40, 50, 60])
,TypeError
volará, en t
será (1, 2, [30, 40])
,(1, 2, [30, 40, 50, 60])
,(1, 2, [30, 40])
.
Respuesta correctaTypeError
volará, en t
será (1, 2, [30, 40, 50, 60])
Pregunta 2
¿Tiene esa estructura de módulos?
foo_app/ snatch/ qwerty.py bar_app/ snatch/ mamamia.py
Cómo hacerlo para que pueda importar estos módulos en el código de esta manera:
from snatch import qwerty, mamamia
Opciones de respuesta:
Respuesta correctaambas opciones anteriores están funcionando
Pregunta 3
Hay un guión:
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()
¿Cuál será el resultado?
Opciones de respuesta:
AttributeError: 'C' object has no attribute 'get_some'
,AttributeError: 'super' object has no attribute 'get_some'
,Some
- vacío (sin Chapaev).
Pregunta 4
Lo que se mostrará cuando ejecute este código:
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()
Opciones de respuesta
foo A
,foo B
,TypeError: Cannot create a consistent method resolution order (MRO) for bases A, B
Respuesta correctaTypeError: Cannot create a consistent method resolution order (MRO) for bases A, B
Pregunta 5
Imagina que tienes un módulo foo.py:
def bar(): print(', !')
Y ejecutas otro script:
import importlib import foo from foo import bar input(', ') importlib.reload(foo) bar()
Mientras espera la entrada, cambia el módulo foo.py:
def bar(): print(', !')
Luego, presiona la "entrada" en foo.py para que continúe funcionando y vea ...
Opciones de respuesta:
ModuleReloadedException: method bar() was reloaded
,, !
,, !
,- vacío (y de nuevo no hay Chapaev).
Pregunta 6
Lo que se mostrará cuando ejecute este código:
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()
Opciones de respuesta:
__init__ A __init__ B
__init__ B __init__ A
__init__ A
__init__ B
Pregunta 7
¿Qué habrá en la salida después de que se ejecute el siguiente código?
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)
Opciones de respuesta:
Resumen
Publicaremos las respuestas a las preguntas mediante una actualización de la publicación el miércoles 25 de julio. Si lo decide, coloque las respuestas debajo del spoiler para que otros participantes estén más interesados en resolver preguntas.
Y (!) No olvide verificar la cuenta de Habr después del final de la prueba.