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

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

Вариант 3982377807.


Ваше имя*:


Вопрос 1

В каких точках программы необходимо выполнять acquire() и release() замка Z, чтобы функция f могла правильно работать в многопоточном приложении? (Как обычно, нужно минимизировать общее время, на которое запирается замок)

def f(x, y, z):
  global d
  # 1
  d[(x, y)] = z
  # 2
  res = len(d)
  # 3
  return res


  1.  1: Z.acquire(), 3: Z.release()
  2.  1: Z.acquire(), 2: Z.release(), Z.acquire(), 3: Z.release()
  3.  1: Z.acquire(), 2: Z.release()
  4.  замок не нужен

Вопрос 2

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

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

Вопрос 3

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

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

Вопрос 4

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

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

Вопрос 5

Имеется следующий массив:

b = array([[1, 2], [0, 1]])

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


  1.  b[: , :]
  2.  b[:, 2]
  3.  b[...]
  4.  b[0, ...]

Вопрос 6

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

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

Вопрос 7

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

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

Вопрос 8

Укажите набор атрибутов, которые считаются общедоступными, для экземпляров следующего класса:

 
class Example:
  def __init__(self, x, y):
    xy = x, y
    self.position = xy
    self._length = self.__len(x, y)
  def __len(self, x, y):
    return abs(x) + abs(y)
  def getlen(self):
    return self._length
 


  1.   getlen, _length, position, __len, xy
  2.   getlen, _length, position
  3.   getlen, position
  4.   position

Вопрос 9

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

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

Вопрос 10

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

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

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