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

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

Вариант 2944564002.


Ваше имя*:


Вопрос 1

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

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.  A, B, C
  2.  только B и C
  3.  только B
  4.  только A и B
  5.  никакие

Вопрос 2

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

[x for x in itertools.takewhile(lambda x: x < 23, itertools.count(10))]
  1.  23
  2.  0
  3.  13
  4.  10

Вопрос 3

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

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

Вопрос 4

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

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

Вопрос 5

Дан массив:

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

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

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

Вопрос 6

Сокрытие информации о внутреннем устройстве объекта, при котором вся работа с объектом ведется только через общедоступный интерфейс называется

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

Вопрос 7

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

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

Вопрос 8

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

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

Вопрос 9

Какими способами можно получить доступ к функции «fun()» из модуля «fns»?

  1.  import fns; fns.fun()
  2.  import fns.fun as fun; fun()
  3.  import fns.fun; fns.fun()

Вопрос 10

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

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