#pragma css /css/2016.css <<BI>> = Контрольная 2a = '''Часть 1.''' Написать функцию, имеющую единственный аргумент типа str (строка) и возвращающую первую (самую левую) подстроку входной строки, имеющую форму HTML-тэга, то есть начинающуюся с "<", заканчивающуюся ">" и не содержащую других символов "<" или ">", кроме начального "<" и конечного ">". Если тэгов в строке нет, должна возвращаться пустая строка. Модуль с функцией может называться произвольно, но должен лежать в директории `H:\term1\block3\test2` и вызываться программой части 2. === Примеры применения === Пусть функция называется "`foo`" и лежит в файле "myfunc.py". {{{ >>> from myfunc import foo >>> s = "abc <P> def" >>> foo(s) '<P>' >>> s1 = "<HTML><BODY><TITLE>" >>> foo(s1) '<HTML>' >>> s2 = "This string contains no tags" >>> foo(s2) '' >>> s3 = "Here only unfinished tags are presented: <A " >>> foo(s3) '' }}} '''Часть 2.''' Написать программу, которая читает файл, чьё имя вводится как первый аргумент командной строки, и печатает для каждой строки этого файла, содержащей завершённые тэги, номер этой строки в файле (первая строка имеет номер 1), затем через табулятор число завершённых тэгов, затем, опять через табулятор, конкатенацию этих тэгов (сумму соответствующих строк). Программа должны вызывать функцию части 1. Пустых строк и строк, соответствующих строкам исходного файла без тэгов, в выдаче быть не должно. === Пример === Содержимое входного файла: {{{ <HTML> <HEAD><TITLE>Something</TITLE></HEAD> <BODY> <H1>Title</H1> <A href = "http://www.google.com"> Google</A> That is all </BODY> </HTML> }}} Вывод программы: {{{ 1 1 <HTML> 2 4 <HEAD><TITLE></TITLE></HEAD> 3 1 <BODY> 4 2 <H1></H1> 7 1 </A> 9 1 </BODY> 10 1 </HTML> }}} Программу назвать "`cw2a.py`" и положить в директорию `H:\term1\block3\test2` (т.е. туда же, куда модуль с функцией). Оба файла должны быть готовы к 11:45.