Анимация
JavaScript
|
Главная Библионтека Глава 7 Ввод/вывод Существует несколько способов представления программного вывода: данные могут быть напечатаны в виде, удобном для восприятия, или записаны в файл для дальнейшего использования. В этой главе обсуждаются некоторые возможности представления выводимых данных. 7.1 Форматированный вывод До сих пор мы использовали два способа вывода: вывод значений выражений в интерактивном режиме и с помощью инструкции print (третий способ - метод объектов-файлов write()). Часто возникает желание иметь больший контроль над форматированием вывода, чем просто выводить значения, разделенные пробелом. Конечно, Вы можете сами обрабатывать строки: с помощью операций среза и объединения можно создать любое расположение, какое только Вы сможете представить. Строки имеют методы, позволяющие дополнять их пробелами до необходимой ширины колонки1. Другой путь - использовать оператор % со строкой в качестве левого аргумента. Оператор % интерпретирует строку справа как строку формата в стиле функции sprintf() в C, которую нужно применить к правому аргументу, и возвращает строку с результатом форматирования. Безусловно, остается еще один вопрос: как получить строковое представление для значений различного типа? К счастью, Python предоставляет возможность преобразовывать значение любого типа в строку: с помощью функции str() . Фактически язык предоставляет две функции для получения строкового представления - repr() (тот же эффект можно получить просто заключив выражение в обратные кавычки: expr) и str() . Первый способ, например, используется интерпретатором для вывода значений выражений в интерактивном режиме, второй - для вывода аргументов инструкцией print. Функция str() по возможности возвращает представление, наиболее пригодное для вывода, а функция repr() - для ввода выражения в интерактивном режиме. Приведем несколько примеров: >>> x = 10 * 3.14 1Эти методы строк появились в версии 1.6 языка Python. В предыдущих версия они доступны в виде функций, определенных в модуле string . >>> x 31.399999999999999 Однако функция str() выведет число с разумной точностью: >>> y = 200*200 >>> s = Значение x равно + str(x) + \ ... , значение y равно + str(y) + ... >>> print s Значение x равно 31.4, значение y равно 40000... Длинные целые числа записываются в языке Python с суффиксом L. Начиная с версии 1.6, функция str() его не выводит: >>> repr(1000L) 1000L >>> str(1000L) 1000 Строковое представление можно получить и для других типов: >>> p = [x, y] >>> ps = repr(p) >>> ps [31.399999999999999, 40000] >>> x, y, (spam, eggs) "(31.399999999999999, 40000, (spam, eggs))" Функция repr() (или ) добавляет кавычки и записывает спецсимволы с помощью управляющих последовательностей: >>> hello = hello, world\n >>> print hello hello, world >>> hellos = hello >>> print hellos hello, world\012 Выведем таблицу квадратов и кубов двумя описанными способами: Число 31.4 не может быть точно представлено в двоичном виде, поэтому: >>> for x in range(1, 11): print str(x).rjust(2), str(x*x).rjust(3), # Обратите внимание на завершающую запятую print str(x*x*x).rjust(4)
>>> for x in range(1,11): print %2d %3d %4d % (x, x*x, x*x*x)
(Обратите внимание на то, что один пробел между колонками был добавлен инструкцией print.) Этот пример демонстрирует использование метода строк rjust() , который выравнивает строку вправо в поле заданной ширины, дополняя ее слева пробелами. Аналогично действуют методы ljust() и center(). Они не выводят ничего - просто возвращают новую строку. Если исходная строка слишком длинная, она не обрезается, а возвращается в неизменном виде: обычно лучше внести беспорядок в расположение колонок, чем вывести неверное значение. (Если Вы действительно хотите ее обрезать, воспользуйтесь операцией среза: s.ljust(n)[0: n].) Также может быть полезна функция zfill(), определенная в модуле string, которая дополняет слева нулями строку с числом, корректно обрабатывая знаки плюс и минус: >>> import string >>> string.zfill(12, 5) 00012 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [ 17 ] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |