Справочник по Python · модуль 1 · данные и имена
Глава 1.3
Функция print():
вывод данных
Программа может посчитать что угодно, но пока результат не выведен на экран, о нём никто не узнает. print() — самая часто вызываемая функция в учебном коде и первый инструмент отладки: именно ею вы будете проверять, что на самом деле лежит в переменной.
- Категория
- Синтаксис и базовые концепции
- Уровень
- Начальный
- Связанные темы
- Переменные, типы данных, ввод
- Зачем это знать
- Показывать результат работы программы и проверять её ход
§1Что делает print()
Функция print() выводит данные на экран — в консоль, она же терминал. Всё, что вы передадите ей в скобках, появится в окне вывода; ничего другого она не делает и никакого результата в программу не возвращает.
print(значение)
print("Hello, world!")
Hello, world!
Текст в кавычках выводится буквально, символ в символ. Кавычки на экран не попадают: они нужны языку, чтобы отличить строку от имени переменной.
Запись x = print("текст") синтаксически верна, но в x окажется None — «значения нет». print() показывает данные человеку, а не передаёт их программе. Перепутать это легко: input() возвращает введённое значение, print() не возвращает ничего.
§2Вывод переменных
В скобки передают не только текст в кавычках, но и имя переменной — тогда на экран попадёт её значение.
name = "Alice" print(name)
Alice
Разница между print(name) и print("name") принципиальна: в первом случае выведется значение — Alice, во втором четыре буквы name. Кавычки означают «взять текст как есть», их отсутствие — «взять значение по имени».
Точно так же в скобках может стоять выражение. Оно сначала вычисляется, а на экран идёт уже результат:
x = 10 y = 5 print(x + y) # 15
§3Несколько значений сразу
Одному вызову можно передать сколько угодно значений — их перечисляют через запятую. На экране они окажутся в одной строке, разделённые пробелом.
name = "Alice" age = 25 print(name, age)
Alice 25
Пробел между значениями print() ставит сам — вы его не писали. Это поведение по умолчанию, и его можно изменить: за разделитель отвечает параметр sep, о котором пойдёт речь в следующей главе.
Ещё одна мелочь, которая пригодится: вызов print() без единого аргумента выводит пустую строку. Так разделяют блоки вывода, чтобы результат читался.
§4Значения разных типов
В одном вызове можно смешивать текст, числа и любые другие значения — print() сам приведёт каждое к строковому виду перед выводом.
name = "Alice" age = 25 print("Имя:", name, "Возраст:", age)
Имя: Alice Возраст: 25
Это важное отличие от операции +. Сложить строку с числом язык откажется — вы помните TypeError из главы о типах. А вот перечислить их через запятую внутри print() можно всегда: здесь не происходит сложения, значения просто выводятся друг за другом.
§5f-строки
Когда текст и данные перемешаны плотно, перечисление через запятую становится неудобным: трудно уследить за пробелами и запятыми. Для таких случаев есть f-строка — строка с буквой f перед кавычкой, внутри которой значения подставляются прямо в текст, в фигурных скобках.
name = "Alice" age = 25 print(f"Имя: {name}, возраст: {age}")
Имя: Alice, возраст: 25
Текст виден целиком, вместе со знаками препинания, — что написали, то и получите. Внутри фигурных скобок допустимо не только имя, но и выражение:
n = 7 print(f"{n} в квадрате = {n ** 2}") # 7 в квадрате = 49
И то самое форматирование числа, которым мы пользовались в главе о переменных, — это тоже f-строка: двоеточие после значения открывает описание того, как его показать.
price = 1895.8333333 print(f"{price}") # 1895.8333333 print(f"{price:.2f}") # 1895.83 — два знака после точки
Без неё фигурные скобки останутся обычными символами: print("Возраст: {age}") выведет на экран буквально Возраст: {age}. Ошибки не будет, программа не упадёт — просто результат окажется бессмысленным. Если в выводе видны фигурные скобки, проверьте букву перед кавычкой.
§6Запятая или плюс
Соединить текст со значением можно тремя способами. Работают все три, но выбирают между ними не наугад.
| Способ | Как выглядит | Когда брать |
|---|---|---|
| Запятая | print("Итого:", total) | быстрый вывод пары значений; пробел добавится сам |
| f-строка | print(f"Итого: {total} руб.") | основной способ: текст виден целиком, доступно форматирование |
| Плюс | print("Итого: " + str(total)) | почти никогда: требует str() и легко даёт TypeError |
Разница между запятой и плюсом в одном: запятая разделяет аргументы функции и сама ставит пробел, плюс склеивает строки и требует, чтобы обе части были строками. Отсюда практическое правило: для вывода — запятая или f-строка, а + оставьте для случаев, когда вам действительно нужно собрать одну строку из нескольких.
§7print() как инструмент отладки
Второе назначение функции — не менее важное, чем первое. Когда программа считает не то, что вы ожидали, print() позволяет заглянуть внутрь и посмотреть, что на самом деле лежит в переменных на этом шаге.
fuel_cost = (distance / fuel_efficiency) * fuel_price print("проверка: fuel_cost =", fuel_cost, type(fuel_cost))
Приём выглядит примитивно, но экономит часы. Правило то же, что и в главе о переменных: print() показывает готовое значение, а вычисления живут в отдельных строках с осмысленными именами. Тогда и проверять есть что — каждый промежуточный результат доступен по имени.
Отладочные выводы после проверки удаляют. Строка print("сюда дошли"), забытая в готовой программе, — верный признак незаконченной работы.
§8Частые ошибки
| Что написано | Что произойдёт | Как правильно |
|---|---|---|
print("Итого: " + total) | TypeError, если total — число | print(f"Итого: {total}") |
print("Возраст: {age}") | выведет скобки буквально — забыта буква f | print(f"Возраст: {age}") |
print(name) вместо print("name") и наоборот | выведется не то: значение вместо текста или текст вместо значения | кавычки — это текст как есть, без кавычек — значение по имени |
print("Привет) | SyntaxError — не закрыта кавычка | кавычки и скобки закрываются парами |
Print("Привет") | NameError — регистр важен, такого имени нет | все встроенные функции пишутся строчными |
x = print(2 + 2) | на экране 4, но в x — None | x = 2 + 2, а затем print(x) |
§9Проверьте себя
Чем отличается print(age) от print("age")?
Первый вызов выведет значение переменной age — например, 25. Второй выведет три буквы age: всё, что стоит в кавычках, выводится буквально. Если переменной age не существует, первый вариант завершится с NameError, а второй отработает без ошибок.
Что выведет print("Сумма:", 2 + 3)?
Сумма: 5. Выражение 2 + 3 вычисляется до вывода, а пробел между значениями print() добавляет сам.
Почему print("Цена: " + 100) вызывает ошибку, а print("Цена:", 100) — нет?
В первом случае выполняется сложение строки с числом, а такая операция не определена — TypeError. Во втором запятая просто разделяет два аргумента функции, никакого сложения не происходит: print() приводит каждое значение к строковому виду самостоятельно.
Как вывести Итого: 4395.83 руб., если в переменной total лежит 4395.833333?
print(f"Итого: {total:.2f} руб."). Запись :.2f округляет число до двух знаков при выводе; само значение в переменной не меняется.
Задача для практики: программа спрашивает имя и год рождения, а затем выводит одну строку вида «Иван, вам 30 лет».
Три строки кода:
name = input("Ваше имя: ")year = int(input("Год рождения: "))print(f"{name}, вам {2026 - year} лет")
Обратите внимание: год приводим к числу, иначе вычесть его не получится, а сам расчёт спокойно живёт внутри фигурных скобок.
§10Шпаргалка
print("Привет") # текст
print(name) # значение
print(name, age)
# пробел ставится сам
print(f"Имя: {name}")
print(f"{n} → {n ** 2}")
print(f"{price:.2f}")
# 1895.83
print()
print("x =", x, type(x))
Итог главы
Функция print() выводит на экран текст, значения переменных и результаты вычислений — и ничего не возвращает в программу. Несколько значений перечисляют через запятую, между ними автоматически появляется пробел. Основной способ собрать текст с данными — f-строка: она читается целиком и умеет форматировать числа. А для себя print() — первый инструмент отладки: когда результат не сходится, посмотрите, что лежит в переменных на самом деле.