Главная / Программирование /
Язык программирования Python / Тест 7
Язык программирования Python - тест 7
Упражнение 1:
Номер 1
В модуле csv
для чтения и записи в CSV-файл используются:
Ответ:
 (1) функции для чтения (записи) 
 (2) методы объекта для записи 
 (3) итераторы по строкам в файле (для чтения) 
 (4) интерфейс файлового объекта 
Номер 2
В пакете email
для чтения и записи поля сообщения используется синтаксис:
Ответ:
 (1) доступа к атрибуту 
 (2) доступа к элементу словаря 
 (3) итератора 
 (4) именованного атрибута 
Номер 3
В модуле xml.dom.minidom
создать объект, представляющий XML-документ, можно:
Ответ:
 (1) вызовом конструктора класса Document
 
 (2) вызовом функции-фабрики Document()
 
 (3) вызовом функции parseString()
 
 (4) вызовом функции toxml()
 
Номер 4
С помощью какого класса из какого модуля пакета email
можно вложить в сообщение бинарный файл?
Ответ:
 (1) модуль MIMEMessage
, класс MIMEMessage
 
 (2) модуль MIMEMultipart
, класс MIMEMultipart
 
 (3) модуль MIMEBase
, класс MIMEBase
 
 (4) модуль Utils
, класс MIME
 
Номер 5
Какой класс из какого модуля пакета email
служит для вложения в сообщение другого сообщения?
Ответ:
 (1) модуль MIMEMessage
, класс MIMEMessage
 
 (2) модуль MIMEMultipart
, класс MIMEMultipart
 
 (3) модуль MIMEBase
, класс MIMEBase
 
 (4) модуль Utils
, класс MIME
 
Упражнение 2:
Номер 1
Какие модули входят в пакетemail
?
Ответ:
 (1) Header
 
 (2) Parser
 
 (3) Rfc822
 
 (4) Generator
 
Номер 2
Какие модули входят в пакет email
?
Ответ:
 (1) Mail
 
 (2) Parser
 
 (3) Message
 
 (4) Generator
 
Номер 3
Как можно получить список полей сообщения msg
?
Ответ:
 (1) msg.keys()
 
 (2) [fld for fld in msg]
 
 (3) msg.get_params()
 
 (4) msg.get_all()
 
Номер 4
С помощью какого метода можно последовательно пройти все части сообщения msg
?
Ответ:
 (1) msg.get_all()
 
 (2) msg.get_params()
 
 (3) msg.walk()
 
 (4) msg.values()
 
Номер 5
Какой метод позволяет узнать, имеет ли данное сообщение несколько частей?
Ответ:
 (1) is_multipart()
 
 (2) get_main_type()
 
 (3) get_payload()
 
 (4) items()
 
Упражнение 3:
Номер 1
Что будет выведено в результате выполнения следующего кода:
import email.Header
print email.Header.decode_header("This is subject")
Ответ:
 (1) [('This is subject', 'us-ascii')]
 
 (2) [('This is subject', None)]
 
 (3) [('This is subject', 'latin-1')]
 
 (4) oшибка: кодировка не задана 
Номер 2
Что будет выведено в результате выполнения следующего кода:
import email.Message
m = email.Message.Message()
m['To'] = '123@mail.ru'
m.set_payload('123')
print m
Ответ:
 (1) строка From
, поля To, Date:
, Message-Id
и 123 в теле письма 
 (2) строка From
, поля To
и 123. Тело пустое 
 (3) строка From
, поле To
и 123 в теле письма 
 (4) указанный выше код некорректен: m.set_payload()
требует файлового объекта 
Номер 3
Что будет выведено в результате выполнения следующего кода:
import email
m = email.message_from_string(
"From: Alice\n"
"To: Bob\n"
"To: Chloe\n"
"\n"
"Sh!")
print m['to']
Ответ:
 (1) всегда Bob
 
 (2) всегда Chloe
 
 (3) Bob
или Chloe
(в общем случае на порядок рассчитывать нельзя) 
 (4) указанный выше код вызовет ошибку, так как в сообщении два поля To
 
Номер 4
Что будет выведено в результате выполнения следующего кода:
from xml.sax.saxutils import XMLGenerator
g = XMLGenerator(encoding="utf-8")
g.startDocument()
g.startElement("A", {})
g.startElement("B", {'b': '1'})
g.characters("2")
g.endElement("B")
g.endElement("A")
g.endDocument()
Ответ:
 (1) <?xml version="1.0" encoding="utf-8"?><A><B b="1">2</B></A> 
 (2) <?xml version="1.0"?><A><B b="1">2</B></A> 
 (3) <?xml version="1.0" encoding="utf-8"?><A><B><b>1</b>2</B></A> 
 (4) <?xml version="1.0" encoding="utf-8"?><A><B b=1>2</B></A> 
Номер 5
Что будет выведено в результате выполнения следующего кода:
from xml.sax.saxutils import XMLGenerator
g = XMLGenerator(encoding="utf-8")
g.startDocument()
g.startElement("A", {})
g.startElement("B", {'b': '1'})
g.endElement("B")
g.startElement("B", {'b': '2'})
g.endElement("B")
g.endElement("A")
g.endDocument()
Ответ:
 (1) <?xml version="1.0" encoding="utf-8"?><A><B b="1" b="2"></B></A> 
 (2) <?xml version="1.0" encoding="utf-8"?><A><B b="1"></B><B
b="2"></B></A> 
 (3) <?xml version="1.0" encoding="utf-8"?><A><B b=1></B><B
b=2></B></A> 
 (4) <?xml version="1.0" encoding="utf-8"?><A><B b="1"><B
b="2"></B></B></A> 
Упражнение 4:
Номер 1
Какой метод больше подходит для обработки XML, если при этом происходит нелинейное изменение структуры XML-документа?
Ответ:
 (1) SAX 
 (2) DOM 
 (3) текстовое редактирование текста XML-документа 
 (4) все методы одинаково подходят 
Номер 2
Можно ли в XML использовать собственные теги?
Ответ:
 (1) можно 
 (2) можно, если они указаны DTD 
 (3) можно, если указаны пространства имен 
 (4) нельзя 
Номер 3
Зачем в XML пространства имен?
Ответ:
 (1) для маркировки тегов с целью более удобного поиска 
 (2) для сочетания в одном документе XML с различными DTD 
 (3) пространства имен позволяют указывать опции для приложения, обрабатывающего XML 
 (4) пространства имен позволяют включать однотипные XML-документы друг в друга 
Номер 4
Что делает метод normalize()
DOM-объекта?
Ответ:
 (1) готовит XML для красивого вывода 
 (2) исправляет XML, добавляя пропущенные теги 
 (3) сводит воедино все идущие подряд текстовые узлы 
 (4) убирает пробелы вокруг текста 
Номер 5
Какие методы позволяют получить атрибут DOM-узла?
Ответ:
 (1) getAttribute()
 
 (2) getAttributeNode()
 
 (3) getAttribute() и getAttributeNode()
 
 (4) атрибуты узла можно получить чтением атрибута DOM-объекта узла node 
Упражнение 5:
Номер 1
Какая ошибка допущена в следующем фрагменте программы, если node
— объект, представляющий узел DOM?
for (k, v) in node.attributes.items():
print k, v
Ответ:
 (1) атрибут node.attributes
не словарь, а список 
 (2) атрибут node.attributes
— метод. Нужно записать как node.attributes()
 
 (3) атрибут node.attributes
может быть равен None
, что вызовет ошибку в методе items()
 
 (4) ошибки нет 
Номер 2
Какой фрагмент XML будет порожден в результате выполнения следующего кода:
from xml.dom import minidom
d = minidom.Document()
e1 = d.createElement("A")
e2 = d.createElement("B")
e3 = d.createElement("C")
e1.appendChild(e2)
e2.appendChild(e3)
print e1.toxml()
Ответ:
 (1) <A><B><C/></B></A>
 
 (2) <A><B><C></C></B></A>
 
 (3) <C><B><A></A></B></C>
 
 (4) <A><B/><C/></A>
 
Номер 3
Какой фрагмент XML будет порожден в результате выполнения следующего кода:
from xml.dom import minidom
e1 = minidom.Element("A")
e2 = minidom.Element("B")
e3 = minidom.Element("C")
e1.appendChild(e2)
e1.appendChild(e3)
print e1.toxml()
Ответ:
 (1) <A><B><C/></B></A>
 
 (2) <A><B><C></A>
 
 (3) <A><B><B/><C><C/></A>
 
 (4) <A><B/><C/></A>
 
Номер 4
Какой фрагмент XML будет порожден в результате выполнения следующего кода:
from xml.dom import minidom
dom = minidom.Document()
e1 = dom.createElement("A")
e2 = dom.createElement("B")
dom.appendChild(e1)
t = dom.createTextNode("2")
e1.appendChild(t)
e1.appendChild(e2)
print dom.toxml()
Ответ:
 (1) <?xml version="1.0" ?><A>2<B></A>
 
 (2) <?xml version="1.0" ?><A>2<B></B></A>
 
 (3) <?xml version="1.0" ?><A>2<B/></A>
 
 (4) <?xml version="1.0" ?><A><B>2</B></A>
 
Номер 5
Какой фрагмент XML будет порожден в результате выполнения следующего кода:
from xml.dom import minidom
dom = minidom.Document()
e1 = dom.createElement("A")
e2 = dom.createElement("B")
dom.appendChild(e1)
t = dom.createTextNode("2")
e1.appendChild(t)
t = dom.createTextNode("3")
e2.appendChild(t)
e1.appendChild(e2)
print dom.toxml()
Ответ:
 (1) <?xml version="1.0" ?><A><B>2</B>3</A>
 
 (2) <?xml version="1.0" ?><A><B>3</B>2</A>
 
 (3) <?xml version="1.0" ?><A>2<B></B>3</A>
 
 (4) <?xml version="1.0" ?><A>2<B>3</B></A>
 
Упражнение 6:
Номер 1
Чему равен атрибут namespaceURI
у элемента <foaf:nick>
из следующего фрагмента XML
<rdf:RDF xmlns:foaf="http://xmlns.com/foaf/0.1/">
...
<foaf:nick>donna</foaf:nick>
Ответ:
 (1) rdf:RDF
 
 (2) http://xmlns.com/foaf/0.1/
 
 (3) nick
 
 (4) foaf
 
Номер 2
Каким образом в документе:
<A><B/><B1/>1<C>2</C></A>
Можно получить текстовый элемент со значением 2?
Предполагается, что он находится в DOM-узле d
.
Ответ:
 (1) d.getElementsByTagName('C')[0].firstChild
 
 (2) d.childNodes[4]
 
 (3) d.lastChild.lastChild.lastChild
 
 (4) d.lastChild.lastChild.firstChild
 
Номер 3
Каким образом в документе:
<A><B/><B1/>1<C>2</C></A>
Можно получить текстовый элемент со значением 1?
Предполагается, что он находится в DOM-узле d
.
Ответ:
 (1) d.getElementsByTagName('A')[0].childNodes[2]
 
 (2) d.childNodes[3]
 
 (3) d.getElementsByTagName('A').childNodes[2]
 
 (4) d.firstChild.firstChild.nextSibling.nextSibling
 
Номер 4
Каким образом в документе:
<A><B><C>2</C></B></A>
Можно получить текстовый элемент со значением 2?
Предполагается, что он находится в DOM-узле d
Ответ:
 (1) d.childNodes[0].childNodes[0].childNodes[0].firstChild
 
 (2) d.childNodes[3]
 
 (3) d.getElementsByTagName('C')[0].childNodes[0]
 
 (4) d.firstChild.lastChild.firstChild.lastChild
 
Номер 5
Каким образом в документе d
:
<A a="1"><B b="1"></B></A>
Можно получить текстовый элемент, имеющий атрибут a
?
Ответ:
 (1) d.firstChild
 
 (2) d.childNodes[0]
 
 (3) d.getElementsByTagName('A')[0].childNodes[0]
 
 (4) d.getElementsByTagName('B')[0].parentNode