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

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

Вариант 3761452036.


Ваше имя*:


Вопрос 1

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

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

Вопрос 3

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

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

Вопрос 4

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

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

Вопрос 5

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

[ " "]
  1.  list (список)
  2.  tuple (кортеж)
  3.  str (строка)
  4.  array (массив)
  5.  это синтаксическая ошибка

Вопрос 6

Имеются следующие определения:

 
class A:
  def am(self):
    print "am"
 
class B:
  def bm(self):
    print "bm"
 
a = A()
b = B()
 


Какой из фрагментов кода содержит ошибки?


  1.   A.am = B.bm; a.am()
  2.   a.am = b.bm; a.bm()
  3.   A.am = b.bm; a.am()
  4.   a.am = b.bm; a.am()

Вопрос 7

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

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

Вопрос 8

Как определить функцию в Python?

  1.  с помощью ключевого слова «function»
  2.  заданием списка строк исходного кода
  3.  с помощью оператора «def»
  4.  с помощью оператора import

Вопрос 9

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

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

Вопрос 10

Какими способами можно получить доступ к функции «fun()» из модуля «fns»?

  1.  import fns.fun; fns.fun()
  2.  import fns.fun as fun; fun()
  3.  import fns; fns.fun()