Перейти к содержимому

Python. Урок 2. Вывод print()

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

Эта функция употребляется в python довольно часто. В ваших первых программах и полноценных консольных приложения она используется как основной метод вывод информации пользователю. Консольный (без графического интерфейса) ввод и вывод используют системные объекты sys.stdout(вывод) и sys.stdin(ввод). Встроенная функция print() реализует запись в stdout⁣, упрощая разработку. Достаточно написать print(), как отдельную инструкцию в вашей программе. В скобках указываются параметры, самый главный – текст, содержимое для вывода.

Thank you for reading this post, don't forget to subscribe!

print("Привет мир!")

print() умеет выводить только строки (string), но также реализовано автоматическое преобразование из других типов, если это возможно. Так что смело подавайте на неё любые типы данных, но учтите, все они будут выведены как строки, например 5.48 (float) 🠖 "5.48" (string):

text = "Variable: " # Строка string с первой частью текста.
num = 115.07 # Переменная с float значением
print("Привет от tphl!") # Явный вывод
print(text) # Вывод переменной
print(num)

Вывод программы будет следующим:
python урок 1. Вывод 1.

А теперь представим, что нам нужно напечатать “variable” и значение в одной строчке. Здесь два варианта – вывести всё одним print или убрать перенос строки после первого. Рассмотрим первый вариант. На самом деле, в функцию print() можно передать не один аргумент (текст), а намного больше. Достаточно перечислить их через запятую:

text = "Variable:"
num = 115.07
print("Привет от tphl!")
print(text, num) # Вот так. Можно и больше.

Вывод:

python урок 1. Вывод 2

Каждая команда print() добавляет в конец выводимой строки некую комбинацию, по умолчанию – символ переноса строки “\n”. У функции print() есть и другие параметры. Параметр endпозволяет заменить символ конца строки (“\n”) на любую другую комбинацию, например – пустой символ. print(text, end="\n") – это и есть второе решение задачи.

text = "Variable:"
num = 115.07
print(text, end="")
print(num)

Вывод:

220953_ 17_coding

Вы могли заметить, что в предыдущем примере, между “Variable:” и “115.07” есть пробел, тогда как во втором он отсутствует. Если со вторым всё понятно – пробела в строках нет, он и не вывелся, то в первом, пробел между значениями – это стандартный разделитель, его настраивает другой параметр, sep.

Испытаем на деле, заменим пробел на восклицательный знак:

text = "Variable:"
num = 115.07
print(text, num, sep="!")

Вывод:

222351_ 19_coding

 

print – бежим на месте

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

ezgif 2 80ba268a9a_ 21_coding

ezgif 2 b87c96aa8e 1_ 23_coding

Здесь, важно заметить, что print не просто записывает новое значение, а перезаписывает им старое. Поэтому, достаточно переместить указатель обратно в начало строки (с помощью символа “\r”) и перезаписать новой.

from itertools import cycle
from time import sleep

for frame in cycle(r'-\|/-\|/'):
    print('\r', frame, end='')
    sleep(0.2)

 

Добавляем красоту

Весь текст, который мы выводим через print() в любом случае окажется в терминале, или в консоли, или в интерактивной среде python – эмуляторах терминала. Весь этот текст будет самым обычным тексом, без какого-то либо форматирования, хотя возможности современных эмуляторов терминала намного шире. Давайте разбираться, как исправить этот эстетический недостаток.

В 1969 году в американском национальном институте стандартов были введены унифицированные стандарты по части текстовой разметки, коды ANSI, которые используется и по сей день, работая везде, где только можно, даже в python. Для того чтобы их использовать, применяются ESCAPE-последовательности ANSI – своего рода язык разметки. Последовательность должна начинаться с непечатаемого символа Esc ("\e"), в восьмеричной системе – 033, в десятичной –  27.

Стандарт ANSI довольно широк и невозможно изучить его в рамках одной статьи, однако, вот несколько примеров, демонстрирующих его возможности:

print('\33[31;1;4m' + "really" + '\33[0m' + "important")

233441_ 25_coding

print('\033[32;45;3;1m' + "Зелёный жирным на пурпурном фоне")

234057_ 27_coding

Действительно, составлять такие коды не очень удобно. К счастью, существуют как онлайн-генераторы ESCAPE-последовательностей, так и целые библиотеки (colorama) упрощающие эту задачу.

 

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

Метки: