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

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

Вариант 4037394474.


Ваше имя*:


Вопрос 1

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

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


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

Вопрос 2

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

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


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


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

Вопрос 3

Класс имеет методы «__iter__()» и «next()».

О чем это говорит и как пользоваться этим методом?

 
class A:
  #...
  def __iter__(self): 
    #...
  def next(self):
    #...
a = A(1, 2, 3)
 
  1.  нет особого названия. Пользоваться можно так: print a.next()
  2.  генератор. Пользоваться можно так: for i in a(): print i
  3.  последовательность. Пользоваться можно так: print a[2]
  4.  итератор. Пользоваться можно так: for i in a: print i

Вопрос 4

Из какого модуля будет работать функция split() в следующем примере:

from sre import *
from string import *
split('a', 'b')
  1.  из re
  2.  из sre.string
  3.  возникнет ошибка (конфликт имен)
  4.  из string

Вопрос 5

Сколько элементов будет содержать словарь D (то есть, чему будет равно len(D)) после выполнения следующего кода:

D = {}
D[1], D[2], D[3] = "ABB"
D[0], D[1] = "AB"
  1.  2
  2.  сообщение об ошибке
  3.  3
  4.  4
  5.  1

Вопрос 6

Какие методы необходимо иметь x для задания следующих действий:

>>> x = X(0)
>>> print x + 10
10
>>> print x - 23
-23
>>> print x >> 2
0


  1.  __init__, __add__, __sub__, __rshift__
  2.  __init__, __add__, __sub__, __rshift__, __str__
  3.  __init__, __add__, __sub__, __rshift__, __str__, __repr__
  4.  __init__, __add__, __radd__, __sub__, __rsub__, __rshift__, __rrshift__

Вопрос 7

Дан массив:

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

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

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

Вопрос 8

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

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

Вопрос 9

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

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

Вопрос 10

Какие новые имена появятся в текущем модуле после выполнения следующего кода:

import re
from re import compile
  1.  нельзя одновременно делать import и «from … import»
  2.  все имена из re (импорт compile был лишним)
  3.  только имена re и compile
  4.  только имя compile