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

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

Вариант 2741430732.


Ваше имя*:


Вопрос 1

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

S = 0
for i in range(1, 10, 2):
  if i % 2 == 0:
    S = S + i 
print(S)
  1.  1024
  2.  10
  3.  1
  4.  сообщение об ошибке
  5.  0
  6.  20

Вопрос 2

Что делает следующая программа?

 
import threading
ready = threading.Event()
 
def proc():
  ready.wait()
  print("Done!")
 
for i in range(5):
  p = threading.Thread(target=proc)
  p.start()
 
print("Prepare!")
ready.set()
 
  1.  программа запускает пять дополнительных потоков, печатающих "Done!" после выполнения ready.set(), то есть, после печати "Prepare!"
  2.  программа запускает пять дополнительных потоков, печатающих "Done!" одновременно
  3.  программа запускает пять дополнительных потоков, один из которых печатает "Done!" после выполнения ready.set(), а остальные ждут следующего ready.set()
  4.  программа создает пять дополнительных потоков, которые запускаются после выполнения ready.set() в главном потоке

Вопрос 3

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

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

Вопрос 4

Может ли возникнуть 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_B.release(); res_C.release(); res_A.release()
 
def proc2():
   res_B.acquire(); res_C.acquire(); res_A.acquire()
   # ...
   res_C.release(); res_B.release(); res_A.release()
 
def proc3():
   res_C.acquire(); res_A.acquire(); res_B.acquire()
   # ...
   res_A.release(); res_B.release(); res_C.release()
 
p1 = threading.Thread(target=proc1, name="t1")
p2 = threading.Thread(target=proc2, name="t2")
p3 = threading.Thread(target=proc3, name="t3")
p1.start(); p2.start(); p3.start()
p1.join(); p2.join(); p3.join();
 


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

Вопрос 5

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

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

Вопрос 6

Сколько элементов будет содержать словарь D (то есть, чему будет равно len(D)) после выполнения следующего кода:

D = {}
D[1], D[2], D[3] = "ABB"
D[0], D[1] = "AB"
  1.  3
  2.  сообщение об ошибке
  3.  1
  4.  4
  5.  2

Вопрос 7

Класс имеет методы «__iter__()» и «next()».

О чем это говорит и как пользоваться этим методом?

 
class A:
  #...
  def __iter__(self): 
    #...
  def next(self):
    #...
a = A(1, 2, 3)
 
  1.  последовательность. Пользоваться можно так: print a[2]
  2.  итератор. Пользоваться можно так: for i in a: print i
  3.  генератор. Пользоваться можно так: for i in a(): print i
  4.  нет особого названия. Пользоваться можно так: print a.next()

Вопрос 8

Укажите набор атрибутов, которые считаются приватными, для экземпляров следующего класса:

 
class Ex:
  def __init__(self, x, y):
    xy = x, y
    self.position = xy
    self._length = self.__len(x, y)
  def __len(self, x, y):
    return abs(x) + abs(y)
  def getlen(self):
    return self._length
 


  1.   _length, __len, position
  2.   _length, __len
  3.   __len, xy, x, y, self
  4.   xy, x, y, self, _length, position

Вопрос 9

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

(0 < 5 <= 3) and (0 / 0)
  1.  будет возбуждено исключение ZeroDivisionError (деление на нуль)
  2.  None
  3.  True (или 1)
  4.  False (или 0)
  5.  синтаксическая ошибка

Вопрос 10

Какие встроенные функции возвращают в качестве значения словарь (или подобный объект)?

  1.  locals()
  2.  directory()
  3.  enumerate()