Calentamiento para aquellos que pueden en Python

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 concurso

Ganador


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.


imagen


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 correcta

TypeError 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:


  • antes de ejecutar el script, ejecute export PYTHONPATH=foo_pp:br_pp ,
  • agregar a la parte superior de la secuencia de comandos:
     import sys sys.path.extend(['foo_app', 'bar_app']) 
  • ambas opciones anteriores están funcionando,
  • Esto no se puede hacer.

Respuesta correcta

ambas 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).

Respuesta correcta

Some


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 correcta

TypeError: 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).

Respuesta correcta

, !


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

Respuesta correcta

__init__ A


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:


  • (True, True)
  • (True, False)
  • ValueError: need more than 2 values to unpack ,
  •  def not_(value): return value ^ SyntaxError: invalid syntax 


Respuesta correcta

(True, False)


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.

Source: https://habr.com/ru/post/es415913/


All Articles