Ввод и вывод в Python: print(), input() и форматирование
Этот урок переведён с английского оригинала.Read in EnglishLeer en españolСообщить об ошибке в переводе
Каждой программе нужен способ общаться с внешним миром. Приложение с прогнозом погоды показывает температуру. Игра отображает ваш счёт. Калькулятор выводит ответы. Всё это вывод.
В Python главный инструмент для показа информации пользователю называется print(). Поначалу эта функция кажется простой, но у неё есть мощные настройки, которые позволяют точно управлять видом вывода.
В этом уроке вы изучите продвинутые приёмы работы с print() и хитрости форматирования для аккуратного вывода, а также узнаете, как input() читает то, что вводит пользователь. К концу урока ваш вывод будет выглядеть аккуратно и профессионально.
Как print() выводит несколько значений?
Вы уже знаете, что print("Hello") выводит текст. Но print() умеет выводить и несколько значений сразу. Перечислите их через запятую, и Python выведет их все, разделив пробелами.
Представьте print() как официанта, который зачитывает ваш заказ. Вы называете ему несколько блюд, и он объявляет каждое с небольшой паузой.
Alice 25 Paris Name: Alice Age: 25 years
Обратите внимание на удобную деталь: Python автоматически ставит пробел между значениями. Кроме того, числа не нужно превращать в строки. Функция print() сделает это за вас.
Что делает параметр sep в print()?
По умолчанию print() ставит между значениями пробел. Параметр sep позволяет заменить этот разделитель на что угодно. Его название происходит от слова separator («разделитель»).
Представьте, что вы нанизываете бусины на нитку. sep подобен узелку, который вы завязываете между бусинами. Вы сами решаете, что окажется между элементами.
A B C A-B-C A | B | C ABC A B C
Параметр sep отлично подходит для форматированного вывода дат, путей к файлам или данных в формате CSV, причём склеивать строки вручную не придётся.
2025-3-15 home/user/docs Alice,25,Paris
Что делает параметр end в print()?
Закончив вывод, print() каждый раз добавляет в конце символ перевода строки. Поэтому вывод каждого вызова print() начинается с новой строки. Параметр end позволяет изменить то, что выводится в конце.
Представьте end как знак препинания в конце предложения. По умолчанию Python «нажимает Enter» после каждого вывода. Вместо этого можно поставить пробел, запятую или вообще ничего.
Hello World Hello World Loading...Done!
apple banana cherry date
Как использовать sep и end вместе?
sep и end можно указать в одном вызове print(). Так вы полностью управляете и тем, что стоит между значениями, и тем, что выводится в самом конце.
A -> B -> C [DONE] Step 1 > Step 2 > Step 3 All steps complete!
Как сделать выровненный и отформатированный вывод?
В настоящих программах вывод должен легко читаться. В таблицах, чеках и отчётах столбцы должны ровно выстраиваться друг под другом. В Python для этого есть несколько способов.
Самый простой способ дают строковые методы .ljust(), .rjust() и .center(). Они дополняют строку пробелами до нужной ширины.
Item Price ------------------------ Coffee $4.50 Sandwich $8.99 Cookie $2.75
Если нужно больше контроля, используйте f-строки со спецификаторами формата. Внутри фигурных скобок можно задать ширину и выравнивание каждого значения.
Name Score ------------------------ Alice 95 Bob 87 Charlie 92
1 2 3 -------------- 1 | 1 2 3 2 | 2 4 6 3 | 3 6 9
Как работает функция input() в Python?
Вывод составляет только половину дела. Большинству программ нужно ещё и получать информацию от пользователя. В Python функция input() приостанавливает программу и ждёт, пока пользователь что-нибудь введёт.
Представьте input() как поле формы на сайте. Программа показывает подсказку, пользователь вводит ответ, а программа сохраняет этот ответ в переменной.
Нажмите «Запустить»: программа остановится на input() и будет ждать. Введите своё имя, нажмите Enter, и программа продолжит работу, а ваш ответ окажется в name.
Функция input() всегда возвращает строку, даже если пользователь ввёл число. Эта важная деталь застаёт врасплох многих новичков. Запустите этот код и введите число:
Как преобразовать ввод пользователя в число?
Раз input() всегда возвращает строку, её нужно преобразовать, если вы ожидаете число. Оберните input() в int() для целых чисел или во float() для дробных.
Какие шаблоны вывода часто встречаются в программах на Python?
В профессиональных программах используются узнаваемые шаблоны вывода. Меню, заголовки, чеки и индикаторы прогресса строятся по привычным образцам. Освоив эти шаблоны, вы придадите своим программам законченный вид.
==============================
RESTAURANT MENU
==============================
1. Burger $8.99
2. Pizza $12.50
3. Salad $7.25
=======================================Sales Report========= Product Units Revenue ------------------------------ Widgets 150 1500.00 Gadgets 89 2670.00 Gizmos 234 4680.00 ------------------------------ Total 8850.00
Упражнения
Пора попрактиковаться! Эти упражнения посвящены форматированию вывода с помощью print(). Попробуйте решить каждое, прежде чем смотреть подсказки.
Выведите слова "red", "green" и "blue", разделив их строкой - (пробел, дефис, пробел). Используйте для этого параметр sep функции print().
Ожидаемый вывод:
red - green - blueОбойдитесь одним вызовом print() с параметром sep.
С помощью цикла for выведите числа от 1 до 5 в одну строку через пробел. В конце добавьте пустой print(), чтобы завершить строку.
Ожидаемый вывод:
1 2 3 4 5Используйте параметр end внутри цикла. Следите, чтобы после 5 не осталось лишнего пробела.
Создайте таблицу умножения для чисел от 1 до 3. Каждое произведение должно быть выровнено по правому краю и занимать 4 символа в ширину. Выведите строку заголовка и строку-разделитель.
Ожидаемый вывод:
1 2 3
-----------
1 | 1 2 3
2 | 2 4 6
3 | 3 6 9Используйте выравнивание в f-строках ({value:>4}), чтобы выровнять числа по правому краю в столбцах шириной 4 символа.
Создайте отформатированный чек со следующими товарами и ценами. С помощью выравнивания в f-строках выровняйте названия товаров по левому краю (ширина 20 символов), а цены по правому краю (ширина 8 символов, 2 знака после запятой). Добавьте заголовок, разделитель и итог.
Товары:
Ожидаемый вывод:
============================
TECH STORE
============================
Item Price
----------------------------
Laptop 999.99
Mouse 29.50
Keyboard 74.99
----------------------------
Total 1104.48
============================Итоги: ввод и вывод в Python
Вот краткая справка по всему, что вы изучили:
| Понятие | Синтаксис | Пример |
|---|---|---|
| Вывод нескольких значений | print(a, b, c) | print("Hi", name) |
| Свой разделитель | sep="..." | print(1, 2, 3, sep="-") даёт 1-2-3 |
| Своё окончание | end="..." | print("Hi", end=" ") оставляет курсор на той же строке |
| Выравнивание по левому краю | f"{val:<width}" | f"{name:<20}" |
| Выравнивание по правому краю | f"{val:>width}" | f"{price:>8.2f}" |
| Выравнивание по центру | f"{val:^width}" | f"{title:^30}" |
| Ввод пользователя | input("prompt") | name = input("Name: ") |
| Преобразование ввода | int(input()) | age = int(input("Age: ")) |
Главное: print() умеет гораздо больше, чем выводить текст. С помощью sep, end и форматирования в f-строках можно получить чистый, профессиональный вывод, а input() всегда возвращает строку, которую нужно преобразовать.
Что дальше?
Теперь, когда вы умеете аккуратно оформлять вывод, можно научиться управлять ходом программы. В следующих уроках вы познакомитесь с инструкциями if и циклами: с их помощью программы принимают решения и повторяют действия.