Wärmen Sie sich für diejenigen auf, die in Python können

Hallo! Wir lieben Quiz über Programmiersprachen. Wir haben bereits drei in unserem Blog veröffentlicht: die erste - in Python, PHP, Golang, DevOps, die zweite - vollständig in Go, die dritte - nur in PHP. Das heutige Quiz ist ausschließlich Python gewidmet.


Wir laden Sie ein, sich zu Ehren des Endes einer weiteren Sommerwoche und am Vorabend der PyCon Russia 2018 aufzuwärmen . (Übrigens, wer geht? Wir werden da sein).


Unter dem Schnitt - sieben Fragen, Ratschläge von einem Freund, Chapaev, Auszüge aus ABBA ( was? Ja! ) Und ein cooler Merch.


UPD: Wir haben die Antworten akzeptiert. Vielen Dank an alle, die teilgenommen haben! Die Antworten auf die Fragen befinden sich im Text, und die Gewinner und Preisträger stehen unter dem Spoiler.


Gewinner und Preisträger des Quiz

Gewinner


Vadem


Preisträger


Zweiter Platz: acerikfy
Dritter Platz: Histiophryne
Vierter - zehnter Platz: Swezy_ua , SlonPC , noth , IIRoadRunnerII , term1nal , alexchromets , Tihon_V .


Bonus


So viele Teilnehmer gaben die richtigen Antworten, dass wir beschlossen, zufällig weitere fünf Paar Socken unter ihnen zu spielen. Coole Socken von Avito erhalten: sunman , grt_pretender , Vash , ipatov_dn , institoris


Rekord zeichnen




Preise


Die Preise werden unter den Top Ten verteilt. Als erster , der alle Fragen des Python-Quiz richtig beantwortet, senden wir ein erweitertes Avito-Merch-Kit: ein Sweatshirt, Socken und hohle Knochen - Sie können sich vorstellen, in welcher Backend-Sprache und in welchem ​​Frontend-Framework Ihr neues Projekt geschrieben wird. Der zweite Teilnehmer, der die Aufgaben erledigt hat, erhält Holivones, Socken und ein T-Shirt. Der dritte bekommt das gleiche Set, aber ohne T-Shirt / Sweatshirt. Unter den verbleibenden sieben Teilnehmern werden wir eine Thermoflasche mit einem Karabiner spielen, die auch auf einer Wanderung, zumindest bei einem Hackathon, mitgenommen werden kann.


Bild


Fragen


* In allen Fällen handelt es sich um Python 3.


Frage 1


Was ist das Ergebnis in der Variablen t :


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

Antwortoptionen:


  • TypeError wird TypeError , bei t sein (1, 2, [30, 40, 50, 60]) ,
  • TypeError wird TypeError , bei t sein (1, 2, [30, 40]) ,
  • (1, 2, [30, 40, 50, 60]) ,
  • (1, 2, [30, 40]) .

Richtige Antwort

TypeError wird TypeError , bei t sein (1, 2, [30, 40, 50, 60])


Frage 2


Haben Sie eine solche Modulstruktur:


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

So machen Sie es, dass Sie diese Module auf folgende Weise in den Code importieren können:


 from snatch import qwerty, mamamia 

Antwortoptionen:


  • Führen Sie vor dem Ausführen des Skripts den export PYTHONPATH=foo_pp:br_pp ,
  • am oberen Rand des Skripts hinzufügen:
     import sys sys.path.extend(['foo_app', 'bar_app']) 
  • beide oben genannten Optionen funktionieren,
  • das kann nicht gemacht werden.

Richtige Antwort

Beide oben genannten Optionen funktionieren


Frage 3


Es gibt ein Skript:


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

Was wird die Ausgabe sein?


Antwortoptionen:


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

Richtige Antwort

Some


Frage 4


Was wird angezeigt, wenn Sie diesen Code ausführen:


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

Antwortoptionen


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

Richtige Antwort

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


Frage 5


Stellen Sie sich vor, Sie haben ein Modul foo.py:


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

Und Sie führen ein anderes Skript aus:


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

Während es auf die Eingabe wartet, ändern Sie das Modul foo.py:


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

Als nächstes drücken Sie die "Eingabe" in foo.py, damit es weiter funktioniert und Sie sehen ...


Antwortoptionen:


  • ModuleReloadedException: method bar() was reloaded ,
  • , ! ,
  • , ! ,
  • Leere (und wieder gibt es keinen Chapaev).

Richtige Antwort

, !


Frage 6


Was wird angezeigt, wenn Sie diesen Code ausführen:


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

Antwortoptionen:


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

Richtige Antwort

__init__ A


Frage 7


Was wird in der Ausgabe sein, nachdem der folgende Code ausgeführt wurde?


 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) 

Antwortoptionen:


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


Richtige Antwort

(True, False)


Zusammenfassung


Wir werden Antworten auf Fragen per Update am Mittwoch, den 25. Juli, veröffentlichen. Wenn Sie sich entscheiden - stellen Sie die Antworten unter den Spoiler, damit andere Teilnehmer mehr an der Lösung von Fragen interessiert sind.
Und (!) Vergessen Sie nicht, nach dem Ende des Quiz das Konto des Habr zu überprüfen.

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


All Articles