Форматирование в python с помощью format()

Методы строк

В Python для строк есть множество методов. Посмотреть их можно по команде dir(str), получить информацию по каждому – help(str.имя_метода). Рассмотрим наиболее интересные из них.

Методы split() и join()

Метод split() позволяет разбить строку по пробелам. В результате получается список слов. Если пользователь вводит в одной строке ряд слов или чисел, каждое из которых должно в программе обрабатываться отдельно, то без split() не обойтись.

>>> s = input()
red blue orange white
>>> s
'red blue orange white'
>>> sl = s.split()
>>> sl

>>> s
'red blue orange white'

Список, возвращенный методом split(), мы могли бы присвоить той же переменной , т. е. . Тогда исходная строка была бы потеряна. Если она не нужна, то лучше не вводить дополнительную переменную.

Метод split() может принимать необязательный аргумент-строку, указывающей по какому символу или подстроке следует выполнить разделение:

>>> s.split('e')

>>> '40030023'.split('00')

Метод строк join() выполняет обратное действие. Он формирует из списка строку. Поскольку это метод строки, то впереди ставится строка-разделитель, а в скобках — передается список:

>>> '-'.join(sl)
'red-blue-orange-white'

Если разделитель не нужен, то метод применяется к пустой строке:

>>> ''.join(sl)
'redblueorangewhite'

Методы find() и replace()

Данные методы строк работают с подстроками. Методы find() ищет подстроку в строке и возвращает индекс первого элемента найденной подстроки. Если подстрока не найдена, то возвращает -1.

>>> s
'red blue orange white'
>>> s.find('blue')
4
>>> s.find('green')
-1

Поиск может производиться не во всей строке, а лишь на каком-то ее отрезке. В этом случае указывается первый и последний индексы отрезка. Если последний не указан, то ищется до конца строки:

>>> letters = 'ABCDACFDA'
>>> letters.find('A', 3)
4
>>> letters.find('DA', , 6)
3

Здесь мы ищем с третьего индекса и до конца, а также с первого и до шестого. Обратите внимания, что метод find() возвращает только первое вхождение. Так выражение последнюю букву ‘A’ не находит, так как ‘A’ ему уже встретилась под индексом 4.

Метод replace() заменяет одну подстроку на другую:

>>> letters.replace('DA', 'NET')
'ABCNETCFNET'

Исходная строка, конечно, не меняется:

>>> letters
'ABCDACFDA'

Так что если результат надо сохранить, то его надо присвоить переменной:

>>> new_letters = letters.replace('DA', 'NET')
>>> new_letters
'ABCNETCFNET'

Метод format()

Строковый метод format() уже упоминался при рассмотрении вывода на экран с помощью функции print():

>>> print("This is a {0}. It's {1}.".format("ball", "red"))
This is a ball. It's red.

Однако к print() он никакого отношения не имеет, а применяется к строкам. Лишь потом заново сформированная строка передается в функцию вывода.

Возможности format() широкие, рассмотрим основные.

>>> size1 = "length - {}, width - {}, height - {}"
>>> size1.format(3, 6, 2.3)
'length - 3, width - 6, height — 2.3'

Если фигурные скобки исходной строки пусты, то подстановка аргументов идет согласно порядку их следования. Если в фигурных скобках строки указаны индексы аргументов, порядок подстановки может быть изменен:

>>> size2 = "height - {2}, length - {0}, width - {1}"
>>> size2.format(3, 6, 2.3)
'height - 2.3, length - 3, width - 6'

Кроме того, аргументы могут передаваться по слову-ключу:

>>> info = "This is a {subj}. It's {prop}."
>>> info.format(subj="table", prop="small")
"This is a table. It's small."

Пример форматирования вещественных чисел:

>>> "{1:.2f} {0:.3f}".format(3.33333, 10/6)
'1.67 3.333'

Новая функция print()

Так как print теперь является функцией, вам нужно будет привыкать писать
вместо . Я знаю, что это болезненно. Все мои знакомые программисты Python, получая при работе в версии 3 ошибку «incorrect syntax», начинают кричать от бешенства. Я знаю, что два лишних символа раздражают и нарушают обратную совместимость. Но у нового варианта есть и преимущества.

Рассмотрим случай, когда вам нужно перенаправить поток стандартного вывода (stdout) в файл журнала. В следующем примере переменной присваивается дескриптор файла log.txt, который открывается для дозаписи в конец файла. Затем с помощью строка перенаправляется в файл
:

>>>fid = open("log.txt", "a")
>>>print>>fid, "log text"

Другой пример — перенаправление стандартного потока ошибок (sys.stderr):

>>>print>>sys.stderr, "an error occurred"

Оба предыдущих примера хороши, но есть лучшее решение. В соответствии с новым синтаксисом теперь в функцию
можно просто передать аргумент . Например:

>>>fid = open("log.txt", "a")
>>>print("log.txt", file=fid)

Синтаксис этого кода гораздо чище. Другим преимуществом нового подхода является возможность изменять разделяющие символы и признак конца строки, передавая нужные значения в параметры и соответственно. Например, чтобы изменить разделяющие символы, вы можете использовать код:

>>>print("Foo", "Bar", sep="%")
>>>Foo%Bar

В общем случае новый синтаксис имеет вид:

print()

Код внутри квадратных скобок () необязателен. По умолчанию вызов возвращает символ новой строки ().

12 ответов

125

Лучший ответ

Есть несколько способов достижения вашего результата. Если вы просто хотите найти решение для своего случая, используйте как упоминает @Ant. Это сработает только в том случае, если каждый из ваших операторов печатает одну и ту же строку

Обратите внимание, что он работает для умножения строки любой длины (например, работает)

Если вы хотите сделать это в целом, создайте строку, а затем напечатайте ее один раз. Это будет занимать немного памяти для строки, но только сделать один вызов для

Обратите внимание, что объединение строк с использованием теперь линейно по размеру объединяемой строки, поэтому это будет быстро

Или вы можете сделать это более напрямую, используя . , которой является оберткой. Это запишет только необработанную строку, которую вы ей дадите, без какого-либо форматирования

Обратите внимание, что ни одна новая строка не печатается даже в конце 20 с

Python 3 изменяет оператор в функцию , которая позволяет вам установить параметр. Вы можете использовать его в> = 2.6, импортируя из . Я бы избегал этого в любом серьезном коде 2.x, поскольку это будет немного запутанным для тех, кто никогда не использовал 3.x. Тем не менее, он должен дать вам почувствовать вкус добра, который приносит 3.x.

21 дек. 2010, в 14:00
Поделиться

122

Из в документе » :

Очевидно, что это работает только с python 3.0 или выше (или 2. 6+ с в начале). Оператор был удален и стал функцией по умолчанию в Python 3.0.

21 дек. 2010, в 13:43
Поделиться

41

Вы можете подавить пробел, напечатав пустую строку в stdout между операторами .

Однако более чистое решение состоит в том, чтобы сначала построить всю строку, которую вы хотите распечатать, а затем вывести ее с помощью одного оператора .

21 дек. 2010, в 12:41
Поделиться

34

Вы можете напечатать символ обратного пространства ():

результат:

21 дек. 2010, в 14:02
Поделиться

30

Python 3.x:

Python 2.6 или 2.7:

21 дек. 2010, в 13:10
Поделиться

10

Если вы хотите, чтобы они отображались по одному, вы можете сделать это:

необходимо, чтобы заставить символ записываться каждый раз, когда цикл выполняется.

06 сен. 2013, в 16:46
Поделиться

7

Как примечание:

Печать — это O (1), но построение строки, а затем печать O (n), где n — общее количество символов в строке. Так что да, строя строку «чище», это не самый эффективный способ сделать это.

То, как я это сделаю, выглядит следующим образом:

Теперь у вас есть «функция печати», которая выводит любую строку, которую вы передаете, не возвращая новый символ строки каждый раз.

Вывод будет: Hello, World!

Однако, если вы хотите печатать целые числа, поплавки или другие нестроковые значения, вам придется преобразовать их в строку с помощью функции str().

Выход будет: 2 4

04 май 2014, в 18:06
Поделиться

6

без чего?
вы имеете в виду

21 дек. 2010, в 12:54
Поделиться

6

Либо что Ant говорит, либо накапливается в строке, а затем печатается один раз:

21 дек. 2010, в 12:52
Поделиться

3

это действительно просто

для версий Python 3+ вам нужно только написать следующие коды

просто конвертируйте цикл в следующие коды, вам не нужно беспокоиться о других вещах

29 нояб. 2018, в 01:43
Поделиться

2

так просто

11 авг. 2018, в 04:15
Поделиться

2

ВОТ ЭТО ДА!!!

Это довольно давно

Теперь, в Python 3.x это будет довольно легко

код:

выход:

Подробнее о функции print()

Здесь:

Вы можете распечатать несколько значений, используя запятые

3 значения будут разделены символом «-«

Вы можете использовать любой символ вместо этой четной строки, такой как sep = ‘@’ или sep = ‘good’

по умолчанию функция печати ставит символ ‘\n’ в конце вывода

но вы можете использовать любой символ или строку, изменив значение конечной переменной

например, end = ‘$’ или end = ‘.’ или конец = «Привет»

это значение по умолчанию, стандартный вывод системы

используя этот аргумент, вы можете создать поток выходного файла, как

с помощью этого кода вы создадите файл с именем output.txt, где будут храниться ваши выходные данные, которые я являюсь программистом

Это значение по умолчанию, используя flush = True, вы можете принудительно очистить поток

04 апр. 2018, в 15:53
Поделиться

Ещё вопросы

  • 291Нет модуля с именем MySQLdb
  • 1901Как прочитать файл построчно в список?
  • 1013UnicodeEncodeError: кодек ‘ascii’ не может кодировать символ u ‘\ xa0’ в позиции 20: порядковый номер не в диапазоне (128)
  • 827Как распечатать на stderr в Python?
  • 541Как напечатать число с запятыми в качестве разделителей тысяч?
  • 39Удалить Python, собранный из исходного кода?
  • 258Простой способ удалить несколько пробелов в строке?
  • 253Найти все вхождения подстроки в Python
  • 251Разбить строку на пробел в Python
  • 91Ускорьте миллионы замен регулярных выражений в Python 3

Параметры print()

  • objects – объект, который нужно вывести * обозначает, что объектов может быть несколько;
  • sep – разделяет объекты. Значение по умолчанию: ‘ ‘ ;
  • end – ставится после всех объектов;
  • file – ожидается объект с методом write ( string ). Если значение не задано, для вывода объектов используется файл sys.stdout ;
  • flush – если задано значение True , поток принудительно сбрасывается в файл. Значение по умолчанию: False .

Примечание: sep, end, file и flush — это аргументы-ключевые слова. Если хотите воспользоваться аргументом sep , используйте:

Возвращаемое значение

Функция Python print не возвращает значений; возвращает None .

Пример 1 : Как работает функция print() в Python?

При запуске программы получаем:

В примере, приведенном выше функции print Python 3 , во всех трёх выражениях передаётся только параметр objects , поэтому:

Используется разделитель ‘ ‘ — обратите внимание на пробел между двумя объектами в результатах вывода;
В качестве параметра end используется ‘n’ ( символ новой строки ). Обратите внимание, что каждое выражение print выводится в новой строке;
file — используется файл sys.stdout

Результат выводится на экран;
Значение flush — False . Поток не сбрасывается принудительно.

Пример 2: print() с разделителем и параметром end

При запуске программы получаем:

Мы передали в программу, пример которой приведен выше, параметры sep и end .

Пример 3: print() с параметром file

С помощью Python print без перевода строки также можно вывести объекты в файл, указав параметр file :

Код, приведенный выше, пытается открыть файл python.txt в режиме записи. Если файл не существует, программа создаёт файл python.txt и открывает его в режиме записи.

В примере мы передали в параметр file объект sourceFile . Объект-строка ‘ Круто же, правда? ‘ записывается в файл python.txt ( после чего можно открыть его текстовым редактором ).

В конце исполнения программы файл закрывается методом close() .

Данная публикация представляет собой перевод статьи « Python print() » , подготовленной дружной командой проекта Интернет-технологии.ру

Обычно люди, переходящие с C / C ++ на Python, задаются вопросом, как напечатать две или более переменных или операторов, не переходя на новую строку в Python. Поскольку функция python print () по умолчанию оканчивается символом новой строки. Python имеет предопределенный формат, если вы используете print (a_variable), то он автоматически перейдет на следующую строку. Например:

приведет к этому

Но иногда может случиться так, что мы не хотим переходить на следующую строку, а хотим печатать на той же строке. Так что мы можем сделать? Например:

Решение, обсуждаемое здесь, полностью зависит от версии Python, которую вы используете.

Печать без перевода строки в Python 2.x

# Python 2 код для печати # на той же линии печати # гики и гиксфоргикс # в той же строке

# печать элемента в том же # линия

for i in range ( 4 ):

Печать без перевода строки в Python 3.x

# Python 3 код для печати # на той же линии печати # гики и гиксфоргикс # в той же строке

print ( «geeks» , end = » » )

# печать элемента в том же # линия

Пример: print(2, ‘
‘, 3)

  • Вопрос задан более двух лет назад
  • 10505 просмотров

Потому что print по умолчанию разделяет аргументы пробелом. Чтобы это предотвратить, добавьте параметр sep=” . print(2, ‘
‘, 3, sep=”)

Также можно вывести все значения с новой строки таким образом:

11.7. Инструменты для работы со списками

Многие потребности структуры данных могут быть удовлетворены с помощью встроенного спискового типа. Тем не менее, иногда возникает потребность в альтернативных реализациях с учетом различных компромиссов производительности.

Модуль array предоставляет объект array(), который подобен списку, хранящему только однородные данные, и сохраняет их более компактно. В следующем примере показан массив чисел, хранящихся в виде беззнаковых двухбайтовых двоичных чисел (typecode «H»), а не обычных 16-байтовых как их записывает обычных список в Python в объекты типа int:

Модуль collections предоставляет объект deque(), который, как список, более быстро добавляет и извлекает с левой стороны, но медленнее осуществляет поиск в середине. Эти объекты хорошо подходят для реализации очередей и широкого первого дерева поиска:

В дополнение к альтернативным реализациям списка библиотека также предлагает и другие инструменты, такие как модуль bisect с функциями для манипулирования упорядоченными списками:

Модуль heapq предоставляет функции для реализации куч, основанных на обычных списках. Самая низкая по значению запись всегда держится в нулевой позиции. Это полезно для приложений, которые неоднократно обращаются к наименьшему элементу, но не хотят запускать полную сортировку списка:

5.7. Подробнее об условиях

Условия, используемые в операторах и могут содержать любые операторы, а не только сравнения.

Операторы сравнения и проверяют, встречается ли (или нет) значение в последовательности. Операторы и проверяют, являются ли два объекта действительно одним и тем же объектом; это имеет значение только для изменяемых объектов, как списки. У всех операторов сравнения одинаковый приоритет, который ниже, чем у всех численных операторов.

Сравнения могут быть объединены в цепь. Например, проверяет, меньше ли a, чем b, и вдобавок равно ли .

Сравнения могут быть объединены с помощью логических операторов и , а результат сравнения (или любого другого логического выражения) может быть перевернут на обратный с помощью . У этих операторов более низкий приоритет, чем у операторов сравнения; среди них имеет самый высокий приоритет, а самый низкий, так что есть эквивалент (. Как всегда скобки могут быть использованы для указания желаемой последовательности выполнения.

Логические операторы and и or являются так называемыми операторами short-circuit (короткое замыкание — прим. пер.): их аргументы оцениваются слева на право, и оценка останавливается, как только результат определен. Например, если и являются правдой, но является ложью, то не оценивает выражение . При использовании не логического значения возвращаемым значением оператора короткого замыкания является последний аргумент, который был оценен.

Есть возможность присвоить результат сравнения или другого логического выражения переменной. Например,

Заметьте, что в Python, в отличие от C, присваивание не может происходить внутри выражений. Программистов на C это может разочаровать, но это позволяет избежать распространенного класса проблем, возникающих в программах на C: ввод в выражении, когда подразумевалось .

5 способов форматирования строк

1. Конкатенация. Грубый способ форматирования, в котором мы просто склеиваем несколько строк с помощью операции сложения:

2. %-форматирование. Самый популярный способ, который перешел в Python из языка С. Передавать значения в строку можно через списки и кортежи , а также и с помощью словаря. Во втором случае значения помещаются не по позиции, а в соответствии с именами.

3. Template-строки. Этот способ появился в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.

4. Форматирование с помощью метода format(). Этот способ появился в Python 3 в качестве замены %-форматированию. Он также поддерживает передачу значений по позиции и по имени.

5. f-строки. Форматирование, которое появилось в Python 3.6 (PEP 498). Этот способ похож на форматирование с помощью метода format(), но гибче, читабельней и быстрей.

Input from Keyboard

The input Function


There are hardly any programs without any input. Input can come in various ways, for example
from a database, another computer, mouse clicks and movements or from the internet. Yet, in
most cases the input stems from the keyboard. For this purpose, Python provides the function
input(). input has an optional parameter, which is the prompt string.

If the input function is called, the program flow will be stopped until the user has given an
input and has ended the input with the return key. The text of the optional parameter, i.e.
the prompt, will be printed on the screen.

The input of the user will be interpreted. If the user e.g. puts in an integer value, the input
function returns this integer value. If the user on the other hand inputs a list, the function
will return a list.

Let’s have a look at the following example:

name = input("What's your name? ")
print("Nice to meet you " + name + "!")
age = input("Your age? ")
print("So, you are already " + str(age) + " years old, " + name + "!")
$ python input_test.py 
What's your name? "Frank"
Nice to meet you Frank!
Your age? 30
So, you are already 30 years old, Frank!
Traceback (most recent call last):
  File "input_test.py", line 1, in <module>
    name = input("What's your name? ")
  File "<string>", line 1, in <module>
NameError: name 'Frank' is not defined
>>> name = input("What's your name? ")
What's your name? "John"
>>>
>>> age = input("Your age? ")
Your age? 38
>>> print(age, type(age))
(38, <type 'int'>)
>>> colours = input("Your favourite colours? ")
Your favourite colours? 
>>> print(colours)

>>> print(colours, type(colours))
(, <type 'list'>)
>>> 

Input with raw_input()

>>> age = raw_input("Your age? ")
Your age? 38
>>> print(age, type(age))
('38', <type 'str'>)
>>> 
>>> age = int(raw_input("Your age? "))
Your age? 42
>>> print(age, type(age))
(42, <type 'int'>)
>>> 
>>> programming_language = raw_input("Your favourite programming languages? ")
Your favourite programming languages? 
>>> print(programming_language, type(programming_language))
('', <type 'str'>)
>>> 
>>> programming_language = eval(raw_input("Your favourite programming languages? "))
Your favourite programming languages?  
>>> print(programming_language, type(programming_language))
(, <type 'list'>)
>>> 
>>> programming_language = list(raw_input("Your favourite programming languages? "))
Your favourite programming languages?  
>>> print(programming_language, type(programming_language))
('], <type 'list'>)
>>> 

Reading Input from Keyboard

Python 2 has two versions of input functions, input() and raw_input(). The input() function treats the received data as string if it is included in quotes » or «», otherwise the data is treated as number.

In Python 3, raw_input() function is deprecated. Further, the received data is always treated as string.

In Python 2

>>> x = input('something:') 
something:10 #entered data is treated as number
>>> x
10

>>> x = input('something:')
something:'10' #entered data is treated as string
>>> x
'10'

>>> x = raw_input("something:")
something:10 #entered data is treated as string even without ''
>>> x
'10'

>>> x = raw_input("something:")
something:'10' #entered data treated as string including ''
>>> x
"'10'"

In Python 3

>>> x = input("something:")
something:10
>>> x
'10'

>>> x = input("something:")
something:'10' #entered data treated as string with or without ''
>>> x
"'10'"

>>> x = raw_input("something:") # will result NameError
Traceback (most recent call last):
   File "<pyshell#3>", line 1, in 
  <module>
   x = raw_input("something:")
NameError: name 'raw_input' is not defined

Новая система ввода/вывода

Метаклассы

Согласно Википедии, «метакласс — это класс, экземплярами которого являются другие классы.» Я раскрою эту концепцию более подробно во второй части этой серии.

Перед началом детального изучения новых механизмов ввода/вывода необходимо ознакомиться с абстрактными базовыми классами (abstract base classes или ABC). Более подробно эта тема будет освещена во второй части этой серии статей.

ABC — это классы, объекты которых нельзя создать. Чтобы использовать ABC, нужно создать класс наследник ABC и переопределить в нем его абстрактные методы. Признаком того, что метод является абстрактным, служит наличие у него декоратора . В новой инфраструктуре ABC также имеется декоратор для определения абстрактных свойств. Чтобы получить доступ к новой инфраструктуре, нужно импортировать модуль стандартной библиотеки. В листинге 1 приведен простой пример.

Листинг 1. Простой абстрактный базовый класс
from abc import ABCMeta

class SimpleAbstractClass(metaclass=ABCMeta):
    pass

SimpleAbstractClass.register(list)

assert isinstance([], SimpleAbstractClass)

Метод принимает в качестве аргумента некоторый класс и делает наш ABC подклассом этого класса. В этом можно убедиться с помощью инструкции в последней строке листинга. В листинге 2 показан другой пример, который использует декораторы.

Листинг 2. Абстрактный класс с декоратором и его реализация
from abc import ABCMeta, abstractmethod

class abstract(metaclass=ABCMeta):
    @abstractmethod
    def absMeth(self):
        pass
 
class A(abstract):
    # must implement abstract method
    def absMeth(self):
        return 0

Теперь, когда мы познакомились с концепцией АВС, давайте приступим к изучению новой системы ввода/вывода. В предыдущих версиях Python отсутствовали некоторые экзотичные, но важные функции, например
, для некоторых потокоподобных объектов.
Потокоподобные объекты — это файлоподобные объекты с методами
и — например, сокеты или файлы. В Python 3 имеется несколько уровней ввода/вывода, основанных на потокоподобных объектах — уровень простого ввода/вывода, уровень буферизованного ввода/вывода и уровень текстового ввода/вывода — каждый из которых реализуется на основе отдельного абстрактного класса.

Как и раньше, вы можете открывать поток с помощью встроенной функции , хотя теперь вы также можете вызвать метод . В результате возвращается буферизованный текстовый файл, методы и которого возвращают строки. (Помните, что все строки в Python 3 являются unicode-строками.) Также вы можете применять буферизованный бинарный режим открытия файла с помощью вызова . В этом случае метод возвращает байты, но вы уже не можете вызвать метод
.

Синтаксис встроенной функции выглядит так:

open(file,mode="r",buffering=None,encoding=None,errors=None,newline=None,closefd=True)

Файл можно открыть в следующих режимах:

  • : чтение
  • : запись
  • : дозапись в конец файла
  • : бинарный режим
  • : текстовый режим
  • : открытие дискового файла для обновления
  • : универсальный режим новой строки

Режимом по умолчанию является (чтение в текстовом режиме).

Именованный аргумент принимает целочисленные значения, которые определяют политику буферизации:

  • : выключает буферизацию
  • : строковая буферизация
  • : полная буферизация (по умолчанию)

Значение по умолчанию параметра encoding зависит от платформы. Параметр закрытия файлового дескриптора,
, может иметь значение True или False. Если оно равно False, то файловый дескриптор сохраняется после закрытия файла. Передача именифайла здесь не сработает, в этом случае надо выставить в True.

Тип объекта, который возвращает функция , зависит от выбранного режима. В таблице 1 показаны типы возвращаемых значений.

Таблица 1. Типы возвращаемых значений для различных режимов открытия файла
Режим Возвращаемое значение
Текстовый режим
Бинарный режим
Режим бинарной записи
Режим бинарной дозаписи
Режим чтения/записи

Замечание: Под текстовыми режимами здесь понимаются режимы ,
, ,
и т.д.

В примере, приведенном в листинге 3, буферизованный бинарный поток открывается для чтения.

Листинг 3. Открытие буферизованного бинарного потока для чтения
>>>import io
>>>f = io.open("hashlib.pyo", "rb")  # открываем для чтения в двоичном режиме
>>>f                                 # f - это объект типа BufferedReader
<io.BufferedReader object at 0xb7c2534c>
>>>f.close()                         # закрываем поток

Объект имеет ряд полезных методов, например ,
, ,
, ,
, ,
, ,
, и
, а также другие. Чтобы увидеть полный список методов, запустите функцию с объектом типа в качестве аргумента.

Вывод данных. Функция print()

Что такое функция в программировании, узнаем позже. Пока будем считать, что print() – это такая команда языка Python, которая выводит то, что в ее скобках на экран.

>>> print(1032)
1032
>>> print(2.34)
2.34
>>> print("Hello")
Hello

В скобках могут быть любые типы данных. Кроме того, количество данных может быть различным:

>>> print("a:", 1)
a: 1
>>> one = 1
>>> two = 2
>>> three = 3
>>> print(one, two, three)
1 2 3

Можно передавать в функцию print() как непосредственно литералы (в данном случае и ), так и переменные, вместо которых будут выведены их значения. Аргументы функции (то, что в скобках), разделяются между собой запятыми. В выводе вместо запятых значения разделены пробелом.

Если в скобках стоит выражение, то сначала оно выполняется, после чего print() уже выводит результат данного выражения:

>>> print("hello" + " " + "world")
hello world
>>> print(10 - 2.5/2)
8.75

В print() предусмотрены дополнительные параметры. Например, через параметр sep можно указать отличный от пробела разделитель строк:

>>> print("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", sep="-")
Mon-Tue-Wed-Thu-Fri-Sat-Sun
>>> print(1, 2, 3, sep="//")
1//2//3

Параметр end позволяет указывать, что делать, после вывода строки. По-умолчанию происходит переход на новую строку. Однако это действие можно отменить, указав любой другой символ или строку:

>>> print(10, end="")
10>>>

Обычно, если end используется, то не в интерактивном режиме, а в скриптах, когда несколько выводов подряд надо разделить не переходом на новую строку, а, скажем, запятыми. Сам переход на новую строку обозначается комбинацией символов . Если присвоить это значение параметру end, то никаких изменений в работе функции print() вы не увидите, так как это значение и так присвоено по-умолчанию:

>>> print(10, end=’\n’)
10
>>>

Однако, если надо отступить на одну дополнительную строку после вывода, то можно сделать так:

>>> print(10, end='\n\n')
10
 
>>>

Следующее, что стоит рассказать о функции print() – это использование форматирования строк. На самом деле это никакого отношения к print() не имеет, а применяется к строкам. Но обычно используется именно в сочетании с функцией print().

Форматирование может выполняться в так называемом старом стиле или с помощью строкового метода format. Старый стиль также называют Си-стилем, так как он схож с тем, как происходит вывод на экран в языке C. Рассмотрим пример:

>>> pupil = "Ben"
>>> old = 16
>>> grade = 9.2
>>> print("It's %s, %d. Level: %f" % (pupil, old, grade))
It's Ben, 16. Level: 9.200000

Здесь вместо трех комбинаций символов , , подставляются значения переменных pupil, old, grade. Буквы s, d, f обозначают типы данных – строку, целое число, вещественное число. Если бы требовалось подставить три строки, то во всех случаях использовалось бы сочетание %s.

Хотя в качестве значения переменной grade было указано число 9.2, на экран оно вывелось с дополнительными нулями. Однако мы можем указать, сколько требуется знаков после запятой, записав перед буквой f точку с желаемым числом знаков в дробной части:

>>> print("It's %s, %d. Level: %.1f" % (pupil, old, grade))
It's Ben, 16. Level: 9.2

Теперь посмотрим на метод format():

>>> print("This is a {0}. It's {1}.".format("ball", "red"))
This is a ball. It's red.
>>> print("This is a {0}. It's {1}.".format("cat", "white"))
This is a cat. It's white.
>>> print("This is a {0}. It's {1} {2}.".format(1, "a", "number"))
This is a 1. It's a number.

В строке в фигурных скобках указаны номера данных, которые будут сюда подставлены. Далее к строке применяется метод format(). В его скобках указываются сами данные (можно использовать переменные). На нулевое место подставится первый аргумент метода format(), на место с номером 1 – второй и т. д.

На самом деле возможности метода format() существенно шире, и для их изучения понадобился бы отдельный урок. Нам пока будет достаточно этого.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector