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

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

Вариант 2024467038.


Ваше имя*:


Вопрос 1

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

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

Вопрос 2

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

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

Вопрос 3

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

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

 
class A:
  #...
  def __iter__(self): 
    #...
  def next(self):
    #...
a = A(1, 2, 3)
 
  1.  итератор. Пользоваться можно так: for i in a: print i
  2.  нет особого названия. Пользоваться можно так: print a.next()
  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.  из string
  4.  возникнет ошибка (конфликт имен)

Вопрос 5

Карринг — это...

  1.  возврат объекта-функции из другой функции
  2.  получение новой функции на основе заданной функции, при котором часть аргументов получает значение
  3.  перенос параметров функции в ее результат
  4.  передача функции в другую функцию

Вопрос 6

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

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

Вопрос 7

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

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

Вопрос 8

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

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

Вопрос 9

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

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': 'B'}
  4.  {'a': 'AAAA', 'b': 'BBBB'}

Вопрос 10

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

L = []
L.append([1,2,3])
L = L*2
  1.  7
  2.  4
  3.  2
  4.  1
  5.  сообщение об ошибке
  6.  6