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

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

Вариант 1170982454.


Ваше имя*:


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

Вопрос 2

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

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

Вопрос 3

Что будет выведено в результате выполнения сопоставления с регулярным выражением?

import re
 
m = re.match("(?P<a>A*?)(?:B+)(?P<b>B+?)(?P<c>C??)", "AAAABBBBC")
print(m.groupdict())
  1.  {'a': 'AAAA', 'c': 'C', 'b': 'B'}
  2.  {'a': 'AAAA', 'b': 'B', 'c': }
  3.  {'a': 'AAAA', 'b': 'B'}
  4.  {'a': 'AAAA', 'b': 'BBBB'}

Вопрос 4

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

import os
global v
v = 0
 
def A(x, y):
  return abs(x + y)
 
B = lambda k, v: os.environ.setdefault(k, v)
 
def C(x):
  global v
  v = v + 1
  return v + x


  1.  только B и C
  2.  никакие
  3.  только A и C
  4.  A, B, C
  5.  только C

Вопрос 5

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

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


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

Вопрос 6

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

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

Вопрос 7

Может ли возникнуть 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_B.acquire()
   res_A.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()


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

Вопрос 8

С помощью какой функции можно организовать цикл с параметром («for»)?

  1.  range()
  2.  id()
  3.  reload()
  4.  xrange()

Вопрос 9

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

[x for x in itertools.takewhile(lambda x: x < 23, itertools.count(10))]
  1.  10
  2.  13
  3.  0
  4.  23

Вопрос 10

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

0 < [1, 4], [1] < 3
  1.  False (или 0)
  2.  None
  3.  True (или 1)
  4.  (True, False) или (1, 0)
  5.  это синтаксическая ошибка