Réchauffez-vous pour ceux qui peuvent en Python

Salut Nous aimons le quiz sur les langages de programmation. Nous en avons déjà publié trois sur notre blog: le premier - en Python, PHP, Golang, DevOps, le second - complètement en Go, le troisième - uniquement en PHP. Le quiz d'aujourd'hui est exclusivement dédié à Python.


Nous vous invitons à vous réchauffer en l'honneur de la fin d'une autre semaine d'été et à la veille de PyCon Russie 2018 . (Au fait, qui va? Nous y serons).


Sous la coupe - sept questions, les conseils d'un ami, Chapaev, des extraits d'ABBA ( quoi? Oui! ) Et un merch cool.


UPD: Nous avons fini d'accepter les réponses. Merci à tous ceux qui ont participé! Les réponses aux questions sont à l'intérieur du texte, et les gagnants et les lauréats sont sous le spoiler.


Gagnants et lauréats du quiz

Gagnant


Vadem


Lauréats


Deuxième place: acerikfy
Troisième place: Histiophryne
Quatrième - dixième place: Swezy_ua , SlonPC , noth , IIRoadRunnerII , term1nal , alexchromets , Tihon_V .


Bonus


Tant de participants ont donné des réponses correctes que nous avons décidé de jouer au hasard cinq autres paires de chaussettes parmi eux. Les chaussettes cool d'Avito reçoivent: sunman , grt_pretender , Vash , ipatov_dn , institoris


Draw Record




Prix


Les prix seront distribués parmi les dix premiers. Le premier à répondre correctement à toutes les questions du quiz Python, nous vous enverrons un kit Avito-merch avancé: un sweat-shirt, des chaussettes et des os creux - vous pouvez deviner dans quel langage backend et framework frontend votre nouveau projet sera écrit. Le deuxième participant ayant terminé les tâches recevra des holivones, des chaussettes et un T-shirt. Le troisième recevra le même ensemble, mais sans T-shirt / sweat-shirt. Parmi les sept participants restants , nous jouerons une bouteille thermique avec une carabine, qui peut être prise même lors d'une randonnée, au moins lors d'un hackathon.


image


Des questions


* Dans tous les cas, nous parlons de Python 3.


Question 1


Quel sera le résultat dans la variable t :


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

Options de réponse:


  • TypeError s'envolera, à t sera (1, 2, [30, 40, 50, 60]) ,
  • TypeError s'envolera, à t sera (1, 2, [30, 40]) ,
  • (1, 2, [30, 40, 50, 60]) ,
  • (1, 2, [30, 40]) .

Bonne réponse

TypeError s'envolera, à t sera (1, 2, [30, 40, 50, 60])


Question 2


Avez-vous une telle structure de modules:


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

Comment faire en sorte que vous puissiez importer ces modules dans le code de cette manière:


 from snatch import qwerty, mamamia 

Options de réponse:


  • avant d'exécuter le script, exécutez l' export PYTHONPATH=foo_pp:br_pp ,
  • ajouter en haut du script:
     import sys sys.path.extend(['foo_app', 'bar_app']) 
  • les deux options ci-dessus fonctionnent,
  • cela ne peut pas être fait.

Bonne réponse

les deux options ci-dessus fonctionnent


Question 3


Il y a un script:


 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() 

Quelle sera la sortie?


Options de réponse:


  • AttributeError: 'C' object has no attribute 'get_some' ,
  • AttributeError: 'super' object has no attribute 'get_some' ,
  • Some
  • vide (sans Chapaev).

Bonne réponse

Some


Question 4


Ce qui sera affiché lorsque vous exécuterez ce code:


 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() 

Options de réponse


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

Bonne réponse

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


Question 5


Imaginez que vous ayez un module foo.py:


 def bar(): print(', !') 

Et vous exécutez un autre script:


 import importlib import foo from foo import bar input(',  ') importlib.reload(foo) bar() 

Pendant qu'il attend l'entrée, vous changez le module foo.py:


 def bar(): print(', !') 

Ensuite, vous appuyez sur la «entrée» dans foo.py pour qu'il continue à fonctionner et vous voyez ...


Options de réponse:


  • ModuleReloadedException: method bar() was reloaded ,
  • , ! ,
  • , ! ,
  • le vide (et là encore il n'y a pas de Chapaev).

Bonne réponse

, !


Question 6


Ce qui sera affiché lorsque vous exécuterez ce code:


 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() 

Options de réponse:


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

Bonne réponse

__init__ A


Question 7


Que contiendra la sortie après l'exécution du code suivant?


 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) 

Options de réponse:


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


Bonne réponse

(True, False)


Résumé


Nous publierons les réponses aux questions par mise à jour de l'article le mercredi 25 juillet. Si vous décidez - mettez les réponses sous le spoiler afin que les autres participants soient plus intéressés à résoudre les questions.
Et (!) N'oubliez pas de vérifier le compte Habr après la fin du quiz.

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


All Articles