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

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

Вариант 478522142.


Ваше имя*:


Вопрос 1

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

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

Вопрос 2

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

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

Вопрос 3

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

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

Вопрос 4

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

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

Вопрос 5

Какую роль играет xx в следующей Python-программе

 
def xx(func):
  class X(object):
    pass
  setattr(X, func.__name__, func)
  return X
 
  1.  метакласс
  2.  метод класса
  3.  функция-фабрика
  4.  функция-фабрика классов

Вопрос 6

С помощью какой функции можно организовать цикл с параметром («for»)?

  1.  xrange()
  2.  id()
  3.  range()
  4.  reload()

Вопрос 7

Какое множество строк описывает регулярное выражение «[ac][ab]»?

  1.  "aa", "ab", "ba", "bb", "ca", "cb"
  2.  "[ac][ab]"
  3.  "ac", "ab"
  4.  "aa", "ab", "ca", "cb"

Вопрос 8

Какие из перечисленных функций имеют побочные эффекты:

lst = []
 
def A(lst, x):
  return lst + [x]
 
def B(x):
  lst.append(x)
  return lst
 
def C(lst, x):
  return lst.count(x)
  1.  никакие
  2.  только A и B
  3.  A, B, C
  4.  только B и C
  5.  только B

Вопрос 9

Какие из перечисленных функций имеют побочные эффекты:

lst = []
 
def A(l, x):
  return lst + [x]
 
def B(l, x):
  lst.append(x)
  return lst
 
def C(l, x):
  return lst.count(x)


  1.  никакие
  2.  только B
  3.  только B и C
  4.  только A и B
  5.  A, B, C

Вопрос 10

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