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

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

Вариант 2317459607.


Ваше имя*:


Вопрос 1

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

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

Вопрос 2

Дан массив:

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

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

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

Вопрос 3

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

def f(x):
  # 1
  fc = open("file.txt", "w+")
  # 2
  fc.write(x)
  # 3
  fc.write("\n")
  # 4
  fc.close()
  # 5


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

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

Вопрос 5

Сколько общедоступных методов будет иметь экземпляр класса ABC и что возвратит вызов метода a()?

class A: 
    def a(self): 
        return 'a'
 
class B: 
    def b(self): 
        return 'b'  
 
class C: 
    def c(self): 
        return 'c'  
 
class AB(A, B): 
    def a(self): 
        return 'ab'
 
class BC(B, C): 
    def a(self): 
        return 'bc'
 
class ABC(AB, B, C): 
    def a(self): 
        return 'abc'
 


  1.  3, возвратит abc
  2.  5, возвратит a
  3.  3, возвратит a
  4.  3, возвратит ab

Вопрос 6

Что будет выведено следующей программой?

a = "AB"
b = "BC"
print("%sa, b" % a, b)
  1.  (AB, BC)a, b
  2.  сообщение об ошибке
  3.  ('AB', 'BC')a, b
  4.  "AB", "BC"a, b
  5.  ABa, b BC

Вопрос 7

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

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

Вопрос 8

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

m = re.match("(a*?)(a+)(b+?)", "aaabbb")
print(m.groups())
  1.  ('aa', 'a', 'b')
  2.  ('a', 'aa', 'b')
  3.  ('aa', 'a', 'bbb')
  4.  (, 'aaa', 'b')

Вопрос 9

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

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

Вопрос 10

Что обычно делается для возврата более одного значения из функции?

  1.  возвращается кортеж значений
  2.  возвращается список значений
  3.  значения можно вернуть через объекты, заданные в списке аргументов (как в C/C++)
  4.  ничего; возвратить можно только одно значение