InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Глава 7. Форматированный вывод


Пока что мы встретили два способа вывода значений: вывод выражений и оператор print . (Третий способ - использование метода write файлового объекта; на файл стандартного вывода можно сослаться как sys.stdout . Для получения дополнительной информации смотрите "Справочник библиотеки Python".)

Вам часто понадобятся более гибкие средства управления форматированным выводом, нежели простой вывод значений, разделенных пробелами. Ключ для получения лучшего форматирования в Python - сделать все строкой, которую Вы обрабатываете сами; используя кусочные операции и конкатенацию строк, можно создать любой вывод, который Вы в состоянии вообразить. Стандартный модуль string содержит несколько полезных операций для размещения строк в колонке заданной ширины; мы это коротко обсудим. И, наконец, оператор % (взятие остатка), со строкой в качестве левого аргумента, интерпретирует эту строку так же как и sprintf языка С форматирует строку, для применения к правому аргументу, и возвращает результирующую строку после операции форматирования.

Конечно же, остается один вопрос: как конвертировать значения в строки ? К счастью, в Python есть способ преобразования любого значения в строку: просто запишите его между кавычками (‘ ‘). Вот несколько примеров:

>>> x=10*3.14
>>> y=200*200
>>> s=’Значение x равно ’+’x’+’, и y равен ’+’y’+’...’
>>> print s
Значение x равно 31.4, и y равен 40000...
# Заключение в кавычки работает и для других типов:
... p=[x,y]
>>> ps=’p’
>>> ps
‘[31.4, 40000]’
>>> # Конвертирование строки добавляет кавычки и спецсимволы:
... hello=’привет, мир\n’
>>> hellos=’hello’
>>> print hellos
‘привет, мир\012’
>>> # Аргументом конвертирующих кавычек может быть тьюпл:
... ‘x,y,(‘spam’,’eggs’)’
"(31.4, 40000, (‘spam’, ‘eggs’))"
>>>

А вот два способа вывода таблицы квадратов и кубов:

>>> import string
>>> for x in range(1,11):
...     print string.rjust(‘x’,2),string.rjust(‘x*x’,3),
...     # Обратите внимание на последнюю запятую в предыдущей строке
...     print string.rjust(‘x*x*x’,4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
>>> for x in range(1,11):
...     print ‘%2d %3d %4d’ % (x,x*x,x*x*x)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
>>>

Замечание: один пробел между каждой колонкой - это работа оператора print: он всегда добавляет пробел между своими аргументами.

Этот пример демонстрирует функцию string.rjust() , которая выравнивает строку вправо в поле заданной ширины, добавляя пробелы слева. Существуют еще две подобные функции: string.ljust() и string.center() 13 .

Эти функции ничего не выводят, они просто возвращают новую строку. Если строка вывода слишком длинная, то они не обрезают ее, а возвращают без изменения; это испортит вашу колонку вывода, но, все-таки, лучше, чем альтернатива вывода некорректных значений. (Если Вы действительно хотите обрезать строку, то всегда сможете добавить кусочную операцию: string.ljust(x,n)[0:n].)

Существует другая функция string.zfill , которая заполняет числовые строки слева нулями. Она понимает знаки "плюс" и "минус":

>>> string.zfill(‘12’,5)
‘00012’
>>> string.zfill(‘-3.14’,7)
‘-003.14’
>>> string.zfill(‘3.14159265359’,5)
‘3.14159265359’
>>>

[Назад][Содержание][Вперед]


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua