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

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

Вариант 647556236.


Ваше имя*:


Вопрос 1

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

 
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 = m.m2; m.m1()
  4.   m.m1 = m1; m.m1(m)

Вопрос 2

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

import os
global v
v = 0
 
def A(x, y):
  return abs(x + y)
 
B = lambda k, v: os.environ.setdefault(k, v)
 
def C(x):
  global v
  v = v + 1
  return v + x


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

Вопрос 3

Какое из приведенных ниже регулярных выражений некорректно?

  1.  [a]*?
  2.  (a+b+)+
  3.  a+b++
  4.  (?P<k>(ac))

Вопрос 4

Какие встроенные функции возвращают в качестве значения словарь (или подобный объект)?

  1.  directory()
  2.  enumerate()
  3.  locals()

Вопрос 5

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

L = []
L.append([1,2,3])
L.insert(1, "abc")
del L[0][0]
  1.  сообщение об ошибке
  2.  4
  3.  1
  4.  2
  5.  3

Вопрос 6

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

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

Вопрос 7

Что можно узнать с помощью регулярного выражения r'([01]+)\1\1'?

  1.  троекратное повторение одной и той же строки из нулей и единиц подряд
  2.  наличие в строке нулей, единиц и обратной косой черты
  3.  наличие в строке нулей и единиц
  4.  троекратное повторение одной и той же строки из нулей и единиц, возможно, не подряд

Вопрос 8

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

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

Вопрос 9

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

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

Вопрос 10

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

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