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

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

Вариант 3476529213.


Ваше имя*:


Вопрос 1

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

 
import numpy as np
…
 

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


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

Вопрос 2

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

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.  печатает 25 звездочек
  4.  беспрерывно печатает звездочки
  5.  печатает 5 звездочек

Вопрос 3

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

import numpy as np
print(np.size(np.ones((2, 5))))
  1.  10
  2.  array([2, 5])
  3.  (2, 5)
  4.  (5, 2)

Вопрос 4

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

 
def m1(self):
  print("m1")
 
class M:
  def m2(self):
    print("m2")
 
m = M()
 


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


  1.   m.m1 = m1; m.m1()
  2.   M.m1 = m1; m.m1()
  3.   m.m1 = m1; m.m1(m)
  4.   m.m1 = m.m2; m.m1()

Вопрос 5

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

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

Вопрос 6

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

(0 < 5 <= 3) and (0 / 0)
  1.  False (или 0)
  2.  синтаксическая ошибка
  3.  будет возбуждено исключение ZeroDivisionError (деление на нуль)
  4.  True (или 1)
  5.  None

Вопрос 7

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

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

Вопрос 8

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

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

Вопрос 9

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

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

Вопрос 10

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

import numpy as np
print(np.shape(np.array([[1, 2, 3], [4, 5, 6]])))
  1.  (2, 3)
  2.  (3,)
  3.  (3, 2)
  4.  (6,)