Форматирование команды print
До сих пор мы изучили три способа формулировать аргумент, передаваемый команде print.
Первый — оператор + для строк. Он позволяет просто объединять строковые фрагменты:
name = "Mark"
age = 37
print("Hi " + name + " your age is " + str(age) + " years" )Этот способ не будет работать, если какой-либо из фрагментов не является строкой. В примере выше переменная age была преобразована в строку с помощью функции str, поскольку это целое число, и его нельзя объединить как есть.
Второй способ — рассматривать каждый фрагмент аргумента как отдельный аргумент и разделять их запятыми:
print("Hi", name, "your age is", age, "years" )Этот код дает точно тот же результат, что и предыдущая версия. Команда print обычно добавляет пробел между каждым аргументом. Преимущество здесь в том, что фрагменты могут быть разных типов, поэтому ничего не нужно преобразовывать в строку.
Если вы хотите убрать автоматически добавляемые пробелы, можно добавить специальный именованный аргумент sep:
print("Hi", name, "your age is", age, "years", sep="")Это выводит
HiMarkyour age is37years
Аргумент sep="" — это именованный аргумент (keyword argument), а его имя является сокращением от separator ("разделитель"). Он указывает, что остальные аргументы теперь должны разделяться пустой строкой. Разделитель можно установить в любую строку. Например, если вы хотите, чтобы каждый аргумент был на отдельной строке, можно установить разделитель в "\n", то есть символ новой строки:
print("Hi", name, "your age is", age, "years", sep="\n")Hi Mark your age is 37 years
По умолчанию команда print всегда заканчивается символом новой строки, но это тоже можно изменить. Keyword argument end указывает, что помещается в конец строки. Если установить end в пустую строку, это означает, что в конце вывода не будет символа новой строки:
print("Hi ", end="")
print("there!")Hi there!
f-строки
Третий способ подготовки строк — f-строки. Предыдущий пример с именем и возрастом в виде f-строки выглядел бы так:
name = "Erkki"
age = 39
print(f"Hi {name} your age is {age} years")До сих пор мы использовали только очень простые f-строки, но они могут быть очень гибкими при форматировании строкового содержимого. Один очень распространенный случай использования — установка количества десятичных знаков, которые выводятся для числа с плавающей точкой. По умолчанию это количество довольно большое:
number = 1/3
print(f"The number is {number}")The number is 0.333333333333333
Конкретный формат, в котором мы хотим показать число, можно задать внутри фигурных скобок выражения переменной. Добавим двоеточие и спецификатор формата после имени переменной:
number = 1/3
print(f"The number is {number:.2f}")The number is 0.33Спецификатор формата .2f говорит, что мы хотим показать 2 десятичных знака. Буква f в конце означает, что мы хотим отобразить переменную как float, то есть число с плавающей точкой.
Вот еще один пример, где мы задаем объем пробельного места, зарезервированного для переменной в выводе. Оба раза, когда переменная name включается в итоговую строку, для нее резервируется место шириной 15 символов. Сначала имена выравниваются по левому краю, а затем по правому:
names = [ "Steve", "Jean", "Katherine", "Paul" ]
for name in names:
print(f"{name:15} centre {name:>15}")Steve centre Steve
Jean centre Jean
Katherine centre Katherine
Paul centre PaulИспользование f-строк не ограничивается командами print. Их можно присваивать переменным и объединять с другими строками:
name = "Larry"
age = 48
city = "Palo Alto"
greeting = f"Hi {name}, you are {age} years of age"
print(greeting + f", and you live in {city}")Hi Larry, you are 48 years of age, and you live in Palo Alto
Можно думать об f-строке как о своего рода функции, которая создает обычную строку на основе "аргументов" внутри фигурных скобок.
Текущие баллы можно посмотреть в синем индикаторе в правом нижнем углу страницы.