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

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

Вариант 174322904.


Ваше имя*:


Вопрос 1

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

import numpy as np
print(np.shape(np.array([[1, 2], [3, 4], [5, 6]])))
  1.  (3,)
  2.  (6,)
  3.  (3, 2)
  4.  (2, 3)

Вопрос 2

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

 
class A:
  def __init__(self, **atts):
    self._atts = atts
  def __repr__(self):
    return ":" + str(self._atts)
 
class B(list):
  def __init__(self, *params):
    super(B, self).__init__(params)
 
  1.  классы не связаны между собой
  2.  ассоциация. Экземпляры A содержат ссылки на экземпляры B
  3.  ассоциация. Экземпляры B содержат ссылки на экземпляры A
  4.  агрегация. Экземпляры B содержат экземпляры A

Вопрос 3

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

 
import numpy as np
print( np.shape(np.transpose(np.ones((2, 3, 4)))) )
 
  1.  (2, 4, 3)
  2.  (3, 2, 4)
  3.  (4, 3, 2)
  4.  (3, 4, 2)

Вопрос 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

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

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

Вопрос 6

Какое множество строк описывает регулярное выражение «[ac][ab]»?

  1.  "ac", "ab"
  2.  "[ac][ab]"
  3.  "aa", "ab", "ba", "bb", "ca", "cb"
  4.  "aa", "ab", "ca", "cb"

Вопрос 7

Из какого модуля будет работать функция «replace()» в следующем примере:

from sre import sub as replace
from string import replace
  1.  из sre.string
  2.  возникнет ошибка (конфликт имен)
  3.  из string
  4.  sre.sub

Вопрос 8

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

L = []
L.append([1,2,3])
L.insert(1, "abc")
del L[0][0]
  1.  4
  2.  2
  3.  сообщение об ошибке
  4.  3
  5.  1

Вопрос 9

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

 
def A(lst):
  return lambda x: lst + [x]
 
def B(x):
  return lambda lst: lst + [x]
 
def C(x, cache={}):
  return cache.setdefault(x, lambda lst: lst + [x])
 
  1.  только C
  2.  только B и C
  3.  никакие
  4.  A, B, C

Вопрос 10

Какие встроенные функции служат для создания объектов определенного типа (конструкторы классов/функции-фабрики…)?

  1.  tuple()
  2.  isinstance()
  3.  chr()