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

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

Вариант 2455713658.


Ваше имя*:


Вопрос 1

Имеется массив c, для которого shape(c) равна (2, 2, 2).

Какие из приведенных ниже операций получения среза вызовут ошибку?

  1.  c[:,-1]
  2.  c[1,2]
  3.  c[...,1]
  4.  c[::2,1]

Вопрос 2

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

 
import threading
l = threading.RLock()
 
def proc(nm, n=0):
  l.acquire()
  try:
    if n < 5:
      print("*", end='')
      return proc(nm, n+1)
    else:
      return nm
  finally:
    l.release() 
 
for i in range(5):
  threading.Thread(target=proc, args=(str(i),)).start()
  1.  печатает 5 звездочек
  2.  аварийно завершается при попытке выполнить l.acquire() во второй раз
  3.  печатает 25 звездочек
  4.  беспрерывно печатает звездочки
  5.  печатает 1 звездочку и зависает

Вопрос 3

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

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

Вопрос 4

Какую роль играет xx в следующей Python-программе

 
class M(object):
  def xx(self):
    print "self:", self
 
  1.  функция-фабрика
  2.  метафункция
  3.  метод класса
  4.  статистический метод

Вопрос 5

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

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

Вопрос 6

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

S = "\n123\\"
  1.  5
  2.  сообщение об ошибке
  3.  3
  4.  6
  5.  7
  6.  4

Вопрос 7

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

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

Вопрос 8

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

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

Вопрос 9

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

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

Вопрос 10

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

import threading
l = threading.Lock()
 
def proc(nm, n=0):
  l.acquire()
  try:
    if n < 5:
      print("*", end='')
      return proc(nm, n+1)
    else:
      return nm
  finally:
    l.release() 
 
for i in range(5):
  threading.Thread(target=proc, args=(str(i),)).start()
  1.  печатает 1 звездочку и зависает
  2.  аварийно завершается при попытке выполнить l.acquire() во второй раз
  3.  печатает 5 звездочек
  4.  печатает 25 звездочек
  5.  беспрерывно печатает звездочки