Упражнения

Изменение вывода символов Юникода

Измените программу print_unicode.py так, чтобы пользователь мог вводить в командной строке несколько разных слов и получать только те строки из таблицы символов Юникода, в которых содержатся все слова, указанные пользователем. Это означает, что мы сможем вводить такие команды:

print_unicode_ans.py greek symbol

Подсказка.

Один из способов достижения поставленной цели состоит в том, чтобы заменить переменную word (которая может хранить 0, None или строку) списком words. Не забудьте изменить информацию о порядке использования. В результате изменений не более десяти строк программного кода добавится и не более десяти строк изменится.

Имя файла: print_unicode_ans.py.

Изменение quadratic.py

Измените программу quadratic.py так, чтобы она не выводила коэффициенты со значением 0.0, а отрицательные коэффициенты выводились бы как -n, а не + - n. Имя файла: quadratic_ans.py.

Использование функции escape()

Удалите функцию escape_html() из программы cvs2html.py и используйте вместо нее функцию xml.sax.saxutils.escape() из модуля xml.sax.saxutils.

Подсказка.

Для этого потребуется добавить одну новую строку (с инструкцией import), удалить пять строк (с ненужной функцией) и изменить одну строку (задействовать функцию xml.sax.saxutils.escape() вместо escape_html()).

Имя файла: cvs2html_ans1.py.

Добавление обработки параметров командной строки в csv2html.py

Измените программу cvs2html.py еще раз и добавьте в нее новую функцию с именем process_options(). Эта функция должна вызываться из функции main() и возвращать кортеж с двумя значениями: maxwidth (типа int) и format (типа str). При вызове функция process_options() должна устанавливать maxwidth в значение по умолчанию 100, а строку format – в значение по умолчанию ".0f", которое будет использоваться как спецификатор формата при выводе чисел. Если пользователь вводит в командной строке -h или --help, должно выводиться сообщение о порядке использования и возвращаться кортеж (None, None). (В этом случае функция main() ничего делать не должна.) В противном случае функция должна прочитать аргументы командной строки и выполнить соответствующие присваивания. Например, устанавливать значение переменной maxwidth, если задан аргумент maxwidth=n, и точно так же устанавливать значение переменной format, если задан аргумент format=s. Ниже приводится сеанс работы с программой, когда пользователь затребовал инструкцию о порядке работы:

Terminal> csv2html2_ans.py -h
usage:
csv2html.py [maxwidth=int] [format=str] < infile.csv > outfile.html
maxwidth - необязательное целое число. Если задано, определяет
максимальное число символов для строковых полей. В противном случае
используется значение по умолчанию 100.

format - формат вывода чисел. Если не задан, по умолчанию используется
формат ".0f".

А ниже приводится пример командной строки, в которой установ- лены оба аргумента:

Terminal> csv2html2_ans.py maxwidth=20 format=0.2f < mydata.csv > mydata.html

Подсказка.

Не забудьте изменить функцию print_line() так, чтобы она использовала переменную format при выводе чисел – для этого вам придется передавать функции дополнительный аргумент, добавить одну строку и изменить еще одну строку. И это немного затронет функцию main(). Функция process_options() должна содержать порядка двадцати пяти строк (включая девять строк с текстом сообщения о порядке использования).

Имя файла: cvs2html_ans2.py.