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

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

Вариант 3004613008.


Ваше имя*:


Вопрос 1

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

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

Вопрос 2

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

( , " ")
  1.  tuple (кортеж)
  2.  это синтаксическая ошибка
  3.  unicode (Unicode-строка)
  4.  str (строка)

Вопрос 3

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

l = [1, 2, 3]
l[1] = l[1:2]
print(l[1])
  1.  [1, 2]
  2.  [2]
  3.  2
  4.  сообщение об ошибке
  5.  [1]

Вопрос 4

Дан массив:

>>>c = array([[1,2], [2,3], [4,5]])

Чему равен срез c[:,1]?

  1.  array([2, 3, 5])
  2.  array([2, 3])
  3.  array([1, 2])
  4.  array([1, 2, 4])

Вопрос 5

Класс имеет метод __call__(). Какому классу он может "подражать" и как пользоваться этим методом?

 
class A:
  #...
  def __call__(self, *params, **kws):
    #...
a = A()
 


  1.  список. Пользоваться можно так: a[0] = 5
  2.  кодовый объект. Пользоваться можно так: eval(a)
  3.  функция. Пользоваться можно так: b = a(2,3,4)
  4.  кортеж. Пользоваться можно так: a = (1, 2, 3)

Вопрос 6

С помощью какого из приведенных ниже сравнений можно установить, что x и y — это один и тот же объект?

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

Вопрос 7

Может ли возникнуть 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_B.acquire(); res_C.acquire(); res_A.acquire()
   # ...
   res_C.release(); res_B.release(); res_A.release()
 
def proc3():
   res_C.acquire(); res_A.acquire(); res_B.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.  да, обязательно

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

Вопрос 9

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

 
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, position
  3.   position
  4.   getlen, _length, position

Вопрос 10

Что будет выведено в результате выполнения сопоставления с регулярным выражением?

import re
 
m = re.match("(?P<a>A*?)(?:B+)(?P<b>B+?)(?P<c>C??)", "AAAABBBBC")
print(m.groupdict())
  1.  {'a': 'AAAA', 'b': 'B', 'c': }
  2.  {'a': 'AAAA', 'c': 'C', 'b': 'B'}
  3.  {'a': 'AAAA', 'b': 'BBBB'}
  4.  {'a': 'AAAA', 'b': 'B'}