Простой тест на знание Python — вопросы

Материал из DISCOPAL
Перейти к: навигация, поиск
12345678910
Простой тест на знание Python

Вариант 3953419244.


Ваше имя*:


Вопрос 1

Что будет получено в результате вычисления следующего выражения:

(0 < [1, 4][1] < 3) + 1
  1.  1
  2.  это синтаксическая ошибка
  3.  3
  4.  0
  5.  2

Вопрос 2

Получен новый пакет (в виде исходных кодов) для Python. Какова рекомендуемая процедура установки нового модуля, если известно, что он использует «distutils»?

  1.  выполнить «distutils --install имя модуля»
  2.  скопировать содержимое в каталог .../site-packages
  3.  выполнить в каталоге с развернутым пакетом команду «python setup.py install»
  4.  в Windows — запустить установщик

Вопрос 3

Имеется следующий генератор для слияния двух отсортированных последовательностей:

def merge(a1, a2):
 a1 = list(a1)
 a2 = list(a2)
 while a1 or a2:
   if a1 and (not a2 or a1[0] < a2[0]):
     r = a1
   else:
     r = a2
   yield r[0]
   del r[0]

Какие ошибки или особенности имеет эта программа?


  1.  в последней строке каждый раз удаляется элемент из временного списка, а не из «a1» или «a2»: генератор зациклится
  2.  генератор оставит за собой временный список, так как «del» происходит после «yield»
  3.  генератор будет портить переданные ему списки
  4.  ошибок нет

Вопрос 4

Какое из приведенных ниже регулярных выражений некорректно?

  1.  [a]*?
  2.  (?P<k>(ac))
  3.  a+b++
  4.  (a+b+)+

Вопрос 5

Сколько символов будет содержать строка S после выполнения следующего кода:

S = "\n123\\"
  1.  3
  2.  сообщение об ошибке
  3.  6
  4.  4
  5.  7
  6.  5

Вопрос 6

Может ли возникнуть deadlock в следующей программе:

import threading
 
res_A = threading.Lock()
res_B = threading.Lock()
res_C = threading.Lock()
 
def proc1():
   res_A.acquire()
   res_B.acquire()
   res_C.acquire()
   # ...
   res_C.release()
   res_B.release()
   res_A.release()
 
def proc2():
   res_A.acquire()
   res_B.acquire()
   res_C.acquire()
   # ...
   res_C.release()
   res_B.release()
   res_A.release()
 
p1 = threading.Thread(target=proc1, name="t1")
p2 = threading.Thread(target=proc2, name="t2")
p1.start()
p2.start()
p1.join()
p2.join()


  1.  да, возможно
  2.  да, обязательно
  3.  нет, не возникнет

Вопрос 7

Какую роль играет «xx» в Python-программе, и чему должен быть равен «XXX»:

 
class A:
  def xx():
    return A.__name__
  xx = XXX(xx)
 
  1.  статический метод, XXX равен staticmethod
  2.  метод класса, XXX равен classmethod
  3.  метод, XXX равен instancemethod
  4.  функция, XXX можно опустить

Вопрос 8

Что будет выведено следующей программой?

a = 1
b = 2
a, b = b, a
print(a, b, a)
  1.  1 2 1
  2.  1 1 1 1 2 1
  3.  1 1 1
  4.  2 1 2

Вопрос 9

Что будет выведено следующей программой?

S = 0
for i in range(1, 10):
  if i % 2 == 0:
    S = S + i 
print(S)


  1.  1024
  2.  10
  3.  сообщение об ошибке
  4.  20
  5.  30
  6.  0

Вопрос 10

Какие из перечисленных функций имеют побочные эффекты:

import os
global v
v = 0
 
def A(x, y):
  return abs(x + y)
 
B = lambda k, v: os.environ.setdefault(k, v)
 
def C(x):
  global v
  v = v + 1
  return v + x


  1.  только B и C
  2.  только C
  3.  A, B, C
  4.  только A и C
  5.  никакие