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

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

Вариант 355403765.


Ваше имя*:


Вопрос 1

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

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

Вопрос 2

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

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

Вопрос 3

Что обычно делается для возврата более одного значения из функции?

  1.  значения можно вернуть через объекты, заданные в списке аргументов (как в C/C++)
  2.  ничего; возвратить можно только одно значение
  3.  возвращается кортеж значений
  4.  возвращается список значений

Вопрос 4

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

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


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

Вопрос 5

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

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


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

Вопрос 6

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

 
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.  A, B, C
  3.  никакие
  4.  только B и C

Вопрос 7

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

L = []
L.append([1,2,3])
L = L*2
  1.  4
  2.  6
  3.  2
  4.  сообщение об ошибке
  5.  1
  6.  7

Вопрос 8

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

(" ", )
  1.  str (строка)
  2.  unicode (Unicode-строка)
  3.  tuple (кортеж)
  4.  это синтаксическая ошибка

Вопрос 9

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

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

Вопрос 10

Какие встроенные функции служат для работы с атрибутами объекта?

  1.  hasattr(), getattr(), setattr(), delattr()
  2.  staticmethod(), classmethod(), property()
  3.  type(), intern(), del
  4.  callable(), super()