Aquecer para quem pode em Python

Oi Adoramos questionários sobre linguagens de programação. Já postamos três em nosso blog: o primeiro - em Python, PHP, Golang, DevOps, o segundo - completamente em Go, o terceiro - apenas em PHP. O questionário de hoje é dedicado exclusivamente ao Python.


Convidamos você a se aquecer em homenagem ao final de mais uma semana de verão e às vésperas da PyCon Rússia 2018 . (A propósito, quem está indo? Estaremos lá).


Sob o corte - sete perguntas, conselhos de um amigo, Chapaev, trechos do ABBA (o que? Sim! ) E uma mercadoria legal.


UPD: Terminamos de aceitar as respostas. Obrigado a todos que participaram! As respostas para as perguntas estão dentro do texto, e os vencedores e vencedores dos prêmios estão sob o spoiler.


Vencedores e vencedores do questionário

Vencedor


Vadem


Vencedores


Segundo lugar: acerikfy
Terceiro Lugar: Histiophryne
Quarto - décimo lugar: Swezy_ua , SlonPC , noth , IIRoadRunnerII , term1nal , alexchromets , Tihon_V .


Bônus


Tantos participantes deram respostas corretas que decidimos jogar aleatoriamente outros cinco pares de meias entre eles. As meias legais da Avito recebem: sunman , grt_pretender , Vash , ipatov_dn , institoris


Draw Record




Prémios


Os prêmios serão distribuídos entre os dez primeiros. O primeiro a responder corretamente a todas as perguntas do questionário Python, enviaremos um kit avançado Avito-merch: um moletom, meias e ossos ocos - você pode adivinhar em qual linguagem de back-end e estrutura de front-end seu novo projeto será escrito. O segundo participante que completou as tarefas será premiado com holivones, meias e uma camiseta. O terceiro terá o mesmo conjunto, mas sem camiseta / moletom. Entre os sete participantes restantes , jogaremos uma garrafa térmica com uma carabina, que pode ser levada até em uma caminhada, pelo menos em uma hackathon.


imagem


Perguntas


* Em todos os casos, estamos falando do Python 3.


Pergunta 1


Qual será o resultado na variável t :


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

Opções de resposta:


  • TypeError , em t será (1, 2, [30, 40, 50, 60]) ,
  • TypeError , em t será (1, 2, [30, 40]) ,
  • (1, 2, [30, 40, 50, 60]) ,
  • (1, 2, [30, 40]) .

Resposta correta

TypeError voará TypeError , em t será (1, 2, [30, 40, 50, 60])


Questão 2


Você tem essa estrutura de módulos:


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

Como fazer isso para que você possa importar esses módulos no código desta maneira:


 from snatch import qwerty, mamamia 

Opções de resposta:


  • antes de executar o script, execute a export PYTHONPATH=foo_pp:br_pp ,
  • adicione ao topo do script:
     import sys sys.path.extend(['foo_app', 'bar_app']) 
  • as duas opções acima estão funcionando,
  • isso não pode ser feito.

Resposta correta

as duas opções acima estão funcionando


Pergunta 3


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

Qual será a saída?


Opções de resposta:


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

Resposta correta

Some


Pergunta 4


O que será exibido quando você executar 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() 

Opções de resposta


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

Resposta correta

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


Questão 5


Imagine que você tem um módulo foo.py:


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

E você executa outro script:


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

Enquanto aguarda a entrada, você altera o módulo foo.py:


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

Em seguida, você pressiona a "entrada" em foo.py para que continue a funcionar e veja ...


Opções de resposta:


  • ModuleReloadedException: method bar() was reloaded ,
  • , ! ,
  • , ! ,
  • vazio (e novamente não há Chapaev).

Resposta correta

, !


Pergunta 6


O que será exibido quando você executar 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() 

Opções de resposta:


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

Resposta correta

__init__ A


Pergunta 7


O que estará na saída após a execução do código a seguir?


 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) 

Opções de resposta:


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


Resposta correta

(True, False)


Sumário


Postaremos respostas para as perguntas atualizando na quarta-feira, 25 de julho. Se você decidir - coloque as respostas embaixo do spoiler para que outros participantes estejam mais interessados ​​em resolver perguntas.
E (!) Não se esqueça de verificar a conta do Habr após o final do teste.

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


All Articles