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

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

Вариант 671586445.


Ваше имя*:


Вопрос 1

Как определить функцию в Python?

  1.  заданием списка строк исходного кода
  2.  с помощью оператора import
  3.  с помощью ключевого слова «function»
  4.  с помощью оператора «def»

Вопрос 2

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

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

Вопрос 3

Укажите набор атрибутов, которые считаются приватными, для экземпляров следующего класса:

 
class Ex:
  def __init__(self, x, y):
    xy = x, y
    self.position = xy
    self._length = self.__len(x, y)
  def __len(self, x, y):
    return abs(x) + abs(y)
  def getlen(self):
    return self._length
 


  1.   _length, __len
  2.   xy, x, y, self, _length, position
  3.   __len, xy, x, y, self
  4.   _length, __len, position

Вопрос 4

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

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

Вопрос 5

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

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

Вопрос 6

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

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

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

Вопрос 8

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

Вопрос 9

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

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

Вопрос 10

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

a = 1
b = 2
a, b = b, a
print(a, b, a)
  1.  1 1 1
  2.  1 2 1
  3.  2 1 2
  4.  1 1 1 1 2 1