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

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

Вариант 740173082.


Ваше имя*:


Вопрос 1

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

import numpy as np
print(np.shape(np.array([[1, 2, 3], [4, 5, 6]]).flat))
  1.  (2, 3)
  2.  (6,)
  3.  (3, 2)
  4.  (3,)

Вопрос 2

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

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

Вопрос 3

Как называется отношение, которое имеют следующие два класса:

 
class A:
  def __init__(self, **atts):
    self._atts = atts
  def __repr__(self):
    return ":" + str(self._atts)
 
class B(list):
  def __init__(self, *params):
    super(B, self).__init__(params)
 
  1.  агрегация. Экземпляры B содержат экземпляры A
  2.  классы не связаны между собой
  3.  ассоциация. Экземпляры B содержат ссылки на экземпляры A
  4.  ассоциация. Экземпляры A содержат ссылки на экземпляры B

Вопрос 4

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

import sre as re
from re import compile
  1.  только имена sre и compile
  2.  имена sre, re и compile
  3.  нельзя одновременно делать import и «from … import»
  4.  только имена re и compile

Вопрос 5

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

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

Вопрос 6

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

import numpy as np
print(np.shape(np.array([[1, 2, 3], [4, 5, 6]])))
  1.  (3, 2)
  2.  (3,)
  3.  (2, 3)
  4.  (6,)

Вопрос 7

Начало определения функции «f» выглядит так:

def f(a, b, c=None, d="0"):

Какие из следующих вариантов вызова приведут к ошибке на этапе присваивания фактических параметров формальным?

  1.  «f(1, d=3)»
  2.  «f(1, 2, 3, 4)»
  3.  «f(1, 2, d=3, c=4)»
  4.  «f(1, 2, d=3)»
  5.  «f(1, 2)»

Вопрос 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

Каким из приведенных ниже способов можно привести латинские символы строки s к нижнему регистру?

  1.  s.tolower()
  2.  s.islower()
  3.  s.replace('A-Z', 'a-z')
  4.  s.lower()

Вопрос 10

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

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