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

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

Вариант 2048966893.


Ваше имя*:


Вопрос 1

Что является результатом применения функции «enumerate()» к последовательности «s»?

  1.  кортеж из двух последовательностей: последовательность чисел от нуля до len(s) и исходная последовательность
  2.  последовательность кортежей. В каждом кортеже первый элемент — номер элемента исходной последовательности, а второй — соответствующий этому номеру член
  3.  последовательность чисел от нуля до len(s)
  4.  последовательность порядковых чисел в различных форматах (арабском, римском)

Вопрос 2

В каких точках программы необходимо выполнять acquire() и release() замка Z, чтобы функция f могла правильно работать в многопоточном приложении? (Как обычно, нужно минимизировать общее время, на которое запирается замок)

def f(x, y, z):
  global d
  # 1
  d[(x, y)] = z
  # 2
  res = len(d)
  # 3
  return res


  1.  1: Z.acquire(), 2: Z.release()
  2.  1: Z.acquire(), 3: Z.release()
  3.  замок не нужен
  4.  1: Z.acquire(), 2: Z.release(), Z.acquire(), 3: Z.release()

Вопрос 3

Что произойдет со старыми объектами модуля, используемыми в программе, при его перезагрузке по reload() (после изменения на диске):

import mdl
a = mdl.a
b = mdl.b()
reload(mdl)
  1.  объекты (a, b) изменятся в соответствии с новыми определениями
  2.  изменится только mdl
  3.  имена из модуля (mdl.a, mdl.b) будут ссылаться на другие объекты. Старые объекты (a, b) не изменятся
  4.  изменятся только классы, функции и т.п. (a)

Вопрос 4

Для чего в регулярном выражении используется "\w"?

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

Вопрос 5

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

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

Вопрос 6

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

 
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(), а остальные ждут следующего ready.set()
  2.  программа запускает пять дополнительных потоков, печатающих "Done!" одновременно
  3.  программа создает пять дополнительных потоков, которые запускаются после выполнения ready.set() в главном потоке
  4.  программа запускает пять дополнительных потоков, печатающих "Done!" после выполнения ready.set(), то есть, после печати "Prepare!"

Вопрос 7

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

  1.  locs()
  2.  enumerate()
  3.  dir()

Вопрос 8

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

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


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

Вопрос 9

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

 
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.   __len, xy, x, y, self
  2.   _length, __len
  3.   xy, x, y, self, _length, position
  4.   _length, __len, position

Вопрос 10

Может ли возникнуть 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.  да, обязательно