игра брюс 2048
Главная / Программирование / Язык программирования Python / Тест 9

Язык программирования Python - тест 9

Упражнение 1:
Номер 1
К какому уровню модели взаимодействия открытых систем относится протокол IP?

Ответ:

 (1) физическому 

 (2) канальному 

 (3) сетевому 

 (4) транспортному 


Номер 2
К какому уровню модели взаимодействия открытых систем относится протокол TCP?

Ответ:

 (1) физическому 

 (2) канальному 

 (3) сетевому 

 (4) транспортному 


Номер 3
К какому уровню модели взаимодействия открытых систем относится протокол HTTP?

Ответ:

 (1) сетевому 

 (2) транспортному 

 (3) сеансовому 

 (4) представления 

 (5) приложений 


Номер 4
К какому уровню модели взаимодействия открытых систем относится протокол FTP?

Ответ:

 (1) сетевому 

 (2) транспортному 

 (3) сеансовому 

 (4) представления 

 (5) приложений 


Номер 5
К какому уровню модели взаимодействия открытых систем относится протокол UDP?

Ответ:

 (1) сетевому 

 (2) транспортному 

 (3) сеансовому 

 (4) представления 

 (5) приложений 


Упражнение 2:
Номер 1
Как с помощью модуля smtplib создать SMTP-соединение с сервером mail.server? 

Ответ:

 (1) c = smtplib.sendmail('mail.server', from_, to_, message) 

 (2) c = smtplib.connect('mail.server') 

 (3) c = smtplib.SMTP('mail.server') 

 (4) c = smtplib.SMTP(); c.connect('mail.server') 


Номер 2
Какие ошибки (и погрешности) допущены в следующем примере?
        fromaddr = "tetja@abcde.ru"
toaddr = "ktoto@edcba.ru"
message = """Здравствуйте! Я ваша тетя.
"""
connect = SMTP('mail.abcde.ru')
connect.sendmail(fromaddr, toaddr, message)
connect.quit()

Ответ:

 (1) не обрабатываются исключения 

 (2) в сообщении (message) не заданы поля 

 (3) отсутствует указание порта SMTP (25) 

 (4) ошибок и существенных погрешностей нет 


Номер 3
Какие ошибки (и погрешности) допущены в следующем примере?
fromaddr = "tetja@abcde.ru"
toaddr = "ktoto@edcba.ru"
message = """Здравствуйте! Я ваша тетя.
"""
try:
  connect = SMTP('mail.abcde.ru')
  connect.sendmail(fromaddr, toaddr, message)
  connect.quit() 
except:
  print "Не удалось отправить сообщение"

Ответ:

 (1) не обрабатываются исключения 

 (2) в сообщении (message) не заданы поля 

 (3) отсутствует указание порта SMTP (25) 

 (4) ошибок и существенных погрешностей нет 


Номер 4
Какие ошибки (и погрешности) допущены в следующем примере?
     fromaddr = "tetja@abcde.ru"
toaddr = "ktoto@edcba.ru"
message = """From: tetja@abcde.ru
To: ktoto@edcba.ru
Subject: Your aunt

Hello! I am your aunt.
"""
try:
  connect = SMTP('mail.abcde.ru')
  connect.sendmail(fromaddr, toaddr, message)
  connect.quit() 
except:
  print "Не удалось отправить сообщение"

Ответ:

 (1) не обрабатываются исключения 

 (2) в сообщении (message) не заданы поля 

 (3) отсутствует указание порта SMTP (25) 

 (4) ошибок и существенных погрешностей нет 


Номер 5
Какие ошибки (и погрешности) допущены в следующем примере?
fromaddr = "tetja@abcde.ru"
toaddr = "ktoto@edcba.ru"
message = """From: tetja@abcde.ru
To: ktoto@edcba.ru
Subject: Your aunt

Hello! I am your aunt.
"""
connect = SMTP('mail.abcde.ru')
connect.sendmail(message)
connect.quit()

Ответ:

 (1) не обрабатываются исключения 

 (2) в сообщении (message) не заданы поля 

 (3) отсутствуют некоторые параметры при вызове connect.sendmail 

 (4) ошибок и существенных погрешностей нет 


Упражнение 3:
Номер 1
 Каким образом в модуле poplib представлен сеанс работы с POP3-сервером?

Ответ:

 (1) набор функций 

 (2) экземпляр класса РОРЗ 

 (3) кортеж 

 (4) список кортежей 


Номер 2
Какие утверждения о следующем фрагменте программы, работающей с POP3-сервером, правильные?
import poplib, email

p = poplib.POP3('pop3.SERVER')
p.getwelcome()
p.user('USERNAME')
p.pass_('USERPASSWORD')
response, lst, octets = p.list()
#
# обработка lst
#
p.quit()
 

Ответ:

 (1) метод list() имеет другой формат результата: просто список. Ошибки (response) в случае необходимости передаются возбуждением исключений 

 (2) учетные данные пользователя (логин и пароль) передаются сразу в методе user, а не отдельным методом pass_() 

 (3) делать quit() необязательно, он выполнится сам 

 (4) ошибок нет 


Номер 3
Какие утверждения о следующем фрагменте программы, работающей с POP3-сервером, правильные?
import poplib, email

p = poplib.POP3('pop3.SERVER')
p.getwelcome()
p.user('USERNAME')
p.pass_('USERPASSWORD')
lst = p.list()
#
# обработка lst
#
p.quit()

Ответ:

 (1) метод list() имеет другой формат результата: ответ сервера, список строк и длина ответа. Правильно было бы написать: response, lst, octets = p.list() 

 (2) учетные данные пользователя (логин и пароль) передаются сразу в методе user, а не отдельным методом pass_() 

 (3) делать quit() необязательно, он выполнится сам 

 (4) ошибок нет 


Номер 4
Какие утверждения о следующем фрагменте программы, работающей с POP3-сервером, правильные?
import poplib, email

p = poplib.POP3('pop3.SERVER')
p.getwelcome()
p.user('USERNAME')
p.pass_('USERPASSWORD')
response, lst, octets = p.list()
#
# обработка lst
# ...
(resp, lines, octets) = p.retr(1)
print "Длина первого сообщения:", len(lines), "символов"
# ...
#
p.quit()
 

Ответ:

 (1) с помощью len(lines) можно вычислить длину сообщения в строках. Для вычисления длины сообщения в символах (точнее, в байтах) нужно просуммировать длину строк в списке lst (или взять octets

 (2) в списке может не быть первого сообщения: необходимо это проверять 

 (3) делать quit() необязательно, он выполнится сам 

 (4) ошибок нет 


Номер 5
Какие утверждения о следующем фрагменте программы, работающей с POP3-сервером, правильные?
import poplib, email

p = poplib.POP3('pop3.SERVER')
p.user('USERNAME', 'USERPASSWORD')
response, lst, octets = p.list()
#
# обработка lst
# ...
#
p.quit()

Ответ:

 (1) отсутствуют две команды протокола POP3 

 (2) неправильный вызов метода user(): пароль задается в отдельной команде 

 (3) делать quit() необязательно, он выполнится сам 

 (4) ошибок нет 


Упражнение 4:
Номер 1
Следующая программа считает, сколько процентов HTML-кода web-страницы занимают встроенные сценарии.
import urllib, re
SITE = "http://mail.ru"
doc = urllib.open(SITE).read()
script_re = re.compile("(?i)(?m)(?s)(<script[^>]*>.+?</script>)")
prc = sum([len(frag) for frag in script_re.findall(doc)]) / float(len(doc)) * 100
print "%.0f%%" % prc
Какие ошибки допущены в этой программе?

Ответ:

 (1) в четвертой строке вместо script_re.findall(doc) нужно использовать script_re.findall("\n".join(doc)) 

 (2) в третьей строке должно быть urllib.urlopen, а не urllib.open 

 (3) в третьей строке не нужно использовать read() 

 (4) ошибок нет 


Номер 2
Какие утверждения о следующей программе (вычисляющей время загрузки сайтов из списка) верные?
import urllib, time
SITES = ["http://ya.ru", "http://yandex.ru", "http://www.google.ru"]
for site in SITES:
  t1 = time.time()
  u = urllib.urlopen(site)
  doc = u.read()
  total = time.time()-t1
  clen = int(u.info()['Content-Length'])
  print site, len(u), clen, total

Ответ:

 (1) u.info() может не содержать Content-Length: нужно предусмотреть try-except 

 (2) в последней строке вместо len(u) нужно использовать len(doc) 

 (3) метод для открытия URL не urllib.urlopen(), а urllib.open() 

 (4) серьезных замечаний и ошибок нет 


Номер 3
Какие утверждения о следующей программе (вычисляющей время загрузки сайтов из списка) верные?
import urllib, time
SITES = ["http://ya.ru", "http://yandex.ru", "http://www.google.ru"]
for site in SITES:
  t1 = time.time()
  u = urllib.urlopen(site)
  doc = u.read()
  total = time.time()-t1
  clen = int(u.info()['Content-Length'])
  print site, len(doc), clen, total

Ответ:

 (1) u.info() может не содержать Content-Length: нужно предусмотреть try-except 

 (2) метод для открытия URL не urllib.urlopen(), а urllib.open() 

 (3) в последней строке вместо len(doc) нужно использовать len(u) 

 (4) серьезных замечаний и ошибок нет 


Номер 4
Что может быть на месте QQQ для корректного формирования запроса с множественными значениями?
import urllib
enc_data = urllib.urlencode(QQQ)
f = urllib.urlopen("http://searchengine.com/search" + "?" + enc_data)

Ответ:

 (1) [("n", "1"), ("n", "3"), ("n", "4"), ("button", "Hello"),] 

 (2) {"n": "1", "n": "3", "n": "4", "button": "Hello"} 

 (3) n="1", n="3", n="4", button="Hello" 

 (4) ["n", "1", "n", "3", "n", "4", "button", "Hello",] 


Номер 5
Что получится в результате вычисления следующего выражения:
urllib.quote("a = b + c")

Ответ:

 (1) 'a%20=%20b%20+%20c' 

 (2) 'a%20=%20b%20%2B%20c' 

 (3) 'a%20%3D%20b%20%2B%20c' 

 (4) 'a+%3D+b+%2B+c' 


Упражнение 5:
Номер 1
Как использовать XML-RPC сервер из Python-программы с помощью модуля xmlrpclib?

Ответ:

 (1) создать объект-подключение вызовом ServerProxy; вызывать метод call этого объекта 

 (2) создать объект-подключение вызовом ServerProxy; вызывать метод этого объекта, соответствующий названию зарегистрированной на удаленном сервере функции 

 (3) вызвать функцию xmlrpclib.make_call, аргументами которой указать URL, имя вызываемой функции и аргументы 


Номер 2
Какой модуль стандартной библиотеки Python позволяет работать с WWW на более низком уровне?

Ответ:

 (1) htmllib 

 (2) urlparse 

 (3) httplib 

 (4) urllib2 


Номер 3
Какой модуль стандартной библиотеки Python обеспечивает большую, чем urllib, дополнительную высокоуровневую функциональность при работе с WWW?

Ответ:

 (1) htmllib 

 (2) urlparse 

 (3) httplib 

 (4) urllib2 


Номер 4
Какова структура URL согласно RFC 2396?

Ответ:

 (1) scheme://netloc/path?query#fragment 

 (2) scheme://netloc/path;parameters?query 

 (3) scheme://netloc/path;parameters?query#fragment 

 (4) scheme://netloc/path?query#fragment;parameters 


Номер 5
Чему будет равен результат выполнения urlparse.urlsplit("http://google.com/search?q=Python#1")?

Ответ:

 (1) ('http', 'google.com', '/search', 'q=Python', '1') 

 (2) ('http', 'google.com', '/search', '', 'q=Python', '1') 

 (3) ('http', 'google.com', 'search', 'q=Python', '1') 

 (4) ('http://', 'google.com/', 'search?', 'q=Python#', '1') 




Главная / Программирование / Язык программирования Python / Тест 9