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

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

Вариант 3247975690.


Ваше имя*:


Вопрос 1

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

 
import threading
 
class PR(threading.Thread):
  def __init__(self, n):
    threading.Thread.__init__(self, name="t" + n)
    self.n = n
  def run(self):
    import time
    time.sleep(1)
    print "*"
 
p1 = PR("1")
p2 = PR("2")
p1.start()
p2.start()
 
  1.  выводит одну звездочку и завершается
  2.  выводит одну звездочку и зависает
  3.  выводит две звездочки спустя секунду после запуска
  4.  через секунду выводит звездочку, а затем через секунду — еще одну

Вопрос 2

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

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

Вопрос 3

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

lst = []
 
def A(l, x):
  return lst + [x]
 
def B(l, x):
  lst.append(x)
  return lst
 
def C(l, x):
  return lst.count(x)


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

Вопрос 4

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

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

Вопрос 5

Может ли возникнуть 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_A.acquire(); res_B.acquire(); res_C.acquire()
   # ...
   res_C.release(); res_B.release(); res_A.release()
 
def proc3():
   res_A.acquire(); res_B.acquire(); res_C.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.  да, возможно

Вопрос 6

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

import threading
 
class PR(threading.Thread):
  def __init__(self, n):
    threading.Thread.__init__(self, name="t" + n)
    self.n = n
  def run(self):
    import time
    time.sleep(1)
    print("*", end='')
 
p1 = PR("1")
p2 = PR("2")
p1.start()
p2.start()


  1.  выводит две звездочки спустя секунду после запуска
  2.  выводит одну звездочку и зависает
  3.  через секунду выводит звездочку, а затем через секунду — еще одну
  4.  выводит одну звездочку и завершается

Вопрос 7

Дан массив:

>>>c = array([[1,2], [2,3], [4,5]])

Чему равен срез c[1]?

  1.  array([2, 3, 5])
  2.  array([1, 2])
  3.  array([1, 2, 4])
  4.  array([2, 3])

Вопрос 8

Что такое регулярное выражение?

  1.  синтаксически правильное выражение на языке Python
  2.  шаблон для операции форматирования
  3.  шаблон, описывающий множество строк
  4.  шаблон для поиска файлов в каталоге

Вопрос 9

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

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


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

Вопрос 10

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

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