الاحماء لأولئك الذين يستطيعون في بيثون

مرحبًا نحن نحب مسابقة حول لغات البرمجة. لقد نشرنا بالفعل ثلاثة على مدونتنا: الأولى - في Python ، PHP ، Golang ، DevOps ، والثانية - تمامًا في Go ، والثالثة - فقط في PHP. مسابقة اليوم مخصصة حصريًا لبايثون.


ندعوك للإحماء على شرف نهاية أسبوع صيفي آخر وعشية PyCon Russia 2018 . (بالمناسبة ، من ذاهب؟ سنكون هناك).


تحت القطع - سبعة أسئلة ، نصيحة من صديق ، Chapaev ، مقتطفات من ABBA ( ماذا؟ نعم! ) وسلعة رائعة.


حدث: لقد انتهينا من قبول الإجابات. شكرا لكل من شارك! الإجابات على الأسئلة موجودة داخل النص ، والفائزين والفائزين بالجوائز هم تحت المفسد.


الفائزون والفائزون في المسابقة

الفائز


Vadem


الفائزون بجوائز


المركز الثاني: acerikfy
المركز الثالث: هيستوفرين
المركز الرابع - العاشر: Swezy_ua ، SlonPC ، noth ، IIRoadRunnerII ، term1nal ، alexchromets ، Tihon_V .


مكافأة


أعطى العديد من المشاركين إجابات صحيحة قررنا أن نلعب بشكل عشوائي خمسة أزواج أخرى من الجوارب بينهم. الجوارب الرائعة من Avito تتلقى: sunman ، grt_pretender ، Vash ، ipatov_dn ، institoris


رسم السجل




الجوائز


سيتم توزيع الجوائز على العشرة الأوائل. أول من أجاب بشكل صحيح على جميع أسئلة اختبار Python ، سنرسل مجموعة Avito-merch متطورة: قميص رياضي وجوارب وعظام مجوفة - يمكنك تخمين لغة الواجهة الخلفية وإطار الواجهة الأمامية الذي سيتم كتابة مشروعك الجديد فيه. سيتم منح المشارك الثاني الذي أكمل المهام مع holivones والجوارب وقميص. سيحصل الثالث على نفس المجموعة ، ولكن بدون تي شيرت / قميص من النوع الثقيل. من بين المشاركين السبعة المتبقين ، سنلعب زجاجة حرارية مع كاربين ، والتي يمكن أخذها حتى في نزهة على الأقل ، في هاكاثون.


الصورة


الأسئلة


* في جميع الأحوال ، نحن نتحدث عن Python 3.


السؤال 1


ماذا ستكون النتيجة في المتغير t :


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

خيارات الإجابة:


  • TypeError سيطير ، t سيكون (1, 2, [30, 40, 50, 60]) ،
  • TypeError سيطير ، t سيكون (1, 2, [30, 40]) ،
  • (1, 2, [30, 40, 50, 60]) ،
  • (1, 2, [30, 40]) .

إجابة صحيحة

TypeError سيطير ، سيكون (1, 2, [30, 40, 50, 60])


السؤال 2


هل لديك مثل هذا الهيكل من الوحدات:


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

كيفية جعله بحيث يمكنك استيراد هذه الوحدات في التعليمات البرمجية بهذه الطريقة:


 from snatch import qwerty, mamamia 

خيارات الإجابة:


  • قبل تشغيل البرنامج النصي ، نفذ عملية export PYTHONPATH=foo_pp:br_pp ،
  • أضف إلى أعلى النص:
     import sys sys.path.extend(['foo_app', 'bar_app']) 
  • كلا الخيارين أعلاه يعملان ،
  • لا يمكن القيام بذلك.

إجابة صحيحة

يعمل كلا الخيارين أعلاه


السؤال 3


يوجد نص برمجي:


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

ماذا سيكون الناتج؟


خيارات الإجابة:


  • AttributeError: 'C' object has no attribute 'get_some' ،
  • AttributeError: 'super' object has no attribute 'get_some' ،
  • Some
  • الفراغ (بدون Chapaev).

إجابة صحيحة

Some


السؤال 4


ما سيتم عرضه عند تشغيل هذا الرمز:


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

خيارات الإجابة


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

إجابة صحيحة

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


السؤال 5


تخيل أن لديك وحدة foo.py:


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

وتقوم بتشغيل برنامج نصي آخر:


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

أثناء انتظار الإدخال ، يمكنك تغيير وحدة foo.py:


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

بعد ذلك ، تضغط على "الإدخال" في foo.py حتى تستمر في العمل وترى ...


خيارات الإجابة:


  • ModuleReloadedException: method bar() was reloaded ،
  • , ! ،
  • , ! ،
  • الفراغ (ومرة أخرى لا يوجد Chapaev).

إجابة صحيحة

, !


السؤال 6


ما سيتم عرضه عند تشغيل هذا الرمز:


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

خيارات الإجابة:


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

إجابة صحيحة

__init__ A


السؤال 7


ماذا سيكون في الإخراج بعد تنفيذ التعليمات البرمجية التالية؟


 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) 

خيارات الإجابة:


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


إجابة صحيحة

(True, False)


الملخص


سننشر إجابات على الأسئلة عن طريق تحديث المنشور يوم الأربعاء 25 يوليو. إذا قررت - ضع الإجابات تحت المفسد بحيث يكون المشاركون الآخرون أكثر اهتمامًا بحل الأسئلة.
و (!) لا تنس التحقق من حساب هبر بعد انتهاء الاختبار.

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


All Articles