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

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

Вариант 316149021.


Ваше имя*:


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

Вопрос 2

Имеется следующий генератор для слияния двух отсортированных последовательностей:

def merge(a1, a2):
 a1 = list(a1)
 a2 = list(a2)
 while a1 or a2:
   if a1 and (not a2 or a1[0] < a2[0]):
     r = a1
   else:
     r = a2
   yield r[0]
   del r[0]

Какие ошибки или особенности имеет эта программа?


  1.  генератор будет портить переданные ему списки
  2.  ошибок нет
  3.  генератор оставит за собой временный список, так как «del» происходит после «yield»
  4.  в последней строке каждый раз удаляется элемент из временного списка, а не из «a1» или «a2»: генератор зациклится

Вопрос 3

Какие встроенные функции возвращают в качестве значения словарь (или подобный объект)?

  1.  enumerate()
  2.  directory()
  3.  locals()

Вопрос 4

Какую роль играет xx в Python-программе, и чему должен быть равен XXX:

 
class A(object):
  def xx(cls, x):
    ...
  xx = XXX(xx)
 
  1.  метод класса, XXX равен classmethod
  2.  статический метод, XXX равен staticmethod
  3.  функция, XXX можно опустить
  4.  метод, XXX равен instancemethod

Вопрос 5

Что является результатом применения функции «enumerate()» к последовательности «s»?

  1.  кортеж из двух последовательностей: последовательность чисел от нуля до len(s) и исходная последовательность
  2.  последовательность чисел от нуля до len(s)
  3.  последовательность кортежей. В каждом кортеже первый элемент — номер элемента исходной последовательности, а второй — соответствующий этому номеру член
  4.  последовательность порядковых чисел в различных форматах (арабском, римском)

Вопрос 6

Даны матрицы a и b.

 
import numpy as np
…
 

Как получить поэлементное произведение матриц?


  1.  np.vdot(a, b)
  2.  a * b
  3.  np.dot(a, b)
  4.  np.product(a, b)

Вопрос 7

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

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

Вопрос 8

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

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.  аварийно завершается при попытке выполнить l.acquire() во второй раз
  2.  печатает 1 звездочку и зависает
  3.  беспрерывно печатает звездочки
  4.  печатает 25 звездочек
  5.  печатает 5 звездочек

Вопрос 9

Какие из приведенных ниже сравнений могут дать True, если объекты x и y имеют разные значения?

  1.  id(x) == id(y)
  2.  x is y
  3.  x == y
  4.  hash(x) == hash(y)

Вопрос 10

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

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