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

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

Вариант 541133028.


Ваше имя*:


Вопрос 1

Класс имеет метод __call__(). Какому классу он может "подражать" и как пользоваться этим методом?

 
class A:
  #...
  def __call__(self, *params, **kws):
    #...
a = A()
 


  1.  список. Пользоваться можно так: a[0] = 5
  2.  функция. Пользоваться можно так: b = a(2,3,4)
  3.  кортеж. Пользоваться можно так: a = (1, 2, 3)
  4.  кодовый объект. Пользоваться можно так: eval(a)

Вопрос 2

Какие из приведенных ниже сравнений обязательно дадут True, если объекты x и y имеют одинаковые значения?

  1.  x is y
  2.  x == y
  3.  id(x) == id(y)

Вопрос 3

С помощью какого регулярного выражения можно найти все (ровно) пятикратные повторения цифры 0?

  1.  00000
  2.  ([^0]|\A)0{5}([^0]|\Z)
  3.  0{1,5}[^0]
  4.  0{5}[^0]
  5.  00000([^0]|\Z)

Вопрос 4

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

import threading
 
res_A = threading.Lock()
res_B = threading.Lock()
 
def proc1():
   res_A.acquire()
   res_B.acquire()
   # ...
   res_B.release()
   res_A.release()
 
def proc2():
   res_A.acquire()
   res_B.acquire()
   # ...
   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.  да, возможно

Вопрос 5

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

l = [1, 2, 3]
l[1] = l[1:2]
print(l[1])
  1.  [1]
  2.  сообщение об ошибке
  3.  [1, 2]
  4.  [2]
  5.  2

Вопрос 6

Что можно узнать с помощью регулярного выражения r'([01]+)\1\1'?

  1.  наличие в строке нулей и единиц
  2.  троекратное повторение одной и той же строки из нулей и единиц подряд
  3.  троекратное повторение одной и той же строки из нулей и единиц, возможно, не подряд
  4.  наличие в строке нулей, единиц и обратной косой черты

Вопрос 7

Как называется отношение, которое имеют следующие два класса:

 
class A:
  def __init__(self, x):
    self._mydata = x
  def m1(self):
    raise NotImplementedError
 
class B(A):
  def __init__(self, x):
    super(B, self).__init__(x)
  def m1(self):
    return self._mydata
 
  1.  агрегация. Экземпляры A содержат экземпляры класса B
  2.  наследование. A получается наследованием B
  3.  ассоциация. Экземпляры A содержат ссылки на экземпляры класса B
  4.  наследование. B получается наследованием A

Вопрос 8

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

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


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

Вопрос 9

Имеется следующий массив:

b = array([[1, 2], [0, 1]])

Какие из приведенных ниже операций получения среза вызовут ошибку?


  1.  b[: , :]
  2.  b[...]
  3.  b[0, ...]
  4.  b[:, 2]

Вопрос 10

В каких местах допущены ошибки в генераторном выражении, выдающем список координат полей шахматной доски?

(j+str(i) for i in range(1, 9) for j in "abcdefgh")
  1.  ошибка в «j+str(i)»
  2.  ошибка в «for i in range(1, 9)»
  3.  ошибка в «for j in "abcdefgh"»
  4.  ошибок нет