Модуль 1 · Данные и имена

Справочник по Python · модуль 1 · данные и имена

Глава 1.3

1.3

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

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

Категория
Синтаксис и базовые концепции
Уровень
Начальный
Связанные темы
Переменные, типы данных, ввод
Зачем это знать
Показывать результат работы программы и проверять её ход

§1Что делает print()

Функция print() выводит данные на экран — в консоль, она же терминал. Всё, что вы передадите ей в скобках, появится в окне вывода; ничего другого она не делает и никакого результата в программу не возвращает.

Синтаксисprint
print(значение)
main.pyпервая программа
print("Hello, world!")
Вывод в терминалрезультат запуска
Hello, world!

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

На полях: вывести и вернуть — разные вещи

Запись x = print("текст") синтаксически верна, но в x окажется None — «значения нет». print() показывает данные человеку, а не передаёт их программе. Перепутать это легко: input() возвращает введённое значение, print() не возвращает ничего.

§2Вывод переменных

В скобки передают не только текст в кавычках, но и имя переменной — тогда на экран попадёт её значение.

main.pyзначение переменной
name = "Alice"
print(name)
Вывод в терминалрезультат запуска
Alice

Разница между print(name) и print("name") принципиальна: в первом случае выведется значение — Alice, во втором четыре буквы name. Кавычки означают «взять текст как есть», их отсутствие — «взять значение по имени».

Точно так же в скобках может стоять выражение. Оно сначала вычисляется, а на экран идёт уже результат:

main.pyсначала расчёт, потом вывод
x = 10
y = 5

print(x + y)   # 15

§3Несколько значений сразу

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

main.pyдва значения в одном вызове
name = "Alice"
age = 25

print(name, age)
Вывод в терминалрезультат запуска
Alice 25

Пробел между значениями print() ставит сам — вы его не писали. Это поведение по умолчанию, и его можно изменить: за разделитель отвечает параметр sep, о котором пойдёт речь в следующей главе.

Ещё одна мелочь, которая пригодится: вызов print() без единого аргумента выводит пустую строку. Так разделяют блоки вывода, чтобы результат читался.

§4Значения разных типов

В одном вызове можно смешивать текст, числа и любые другие значения — print() сам приведёт каждое к строковому виду перед выводом.

main.pyтекст вперемешку с данными
name = "Alice"
age = 25

print("Имя:", name, "Возраст:", age)
Вывод в терминалрезультат запуска
Имя: Alice Возраст: 25

Это важное отличие от операции +. Сложить строку с числом язык откажется — вы помните TypeError из главы о типах. А вот перечислить их через запятую внутри print() можно всегда: здесь не происходит сложения, значения просто выводятся друг за другом.

§5f-строки

Когда текст и данные перемешаны плотно, перечисление через запятую становится неудобным: трудно уследить за пробелами и запятыми. Для таких случаев есть f-строка — строка с буквой f перед кавычкой, внутри которой значения подставляются прямо в текст, в фигурных скобках.

main.pyподстановка значений в текст
name = "Alice"
age = 25

print(f"Имя: {name}, возраст: {age}")
Вывод в терминалрезультат запуска
Имя: Alice, возраст: 25

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

Pythonвычисление внутри скобок
n = 7
print(f"{n} в квадрате = {n ** 2}")   # 7 в квадрате = 49

И то самое форматирование числа, которым мы пользовались в главе о переменных, — это тоже f-строка: двоеточие после значения открывает описание того, как его показать.

Pythonуправление видом числа
price = 1895.8333333

print(f"{price}")        # 1895.8333333
print(f"{price:.2f}")    # 1895.83 — два знака после точки
Не забывайте букву f

Без неё фигурные скобки останутся обычными символами: print("Возраст: {age}") выведет на экран буквально Возраст: {age}. Ошибки не будет, программа не упадёт — просто результат окажется бессмысленным. Если в выводе видны фигурные скобки, проверьте букву перед кавычкой.

§6Запятая или плюс

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

СпособКак выглядитКогда брать
Запятаяprint("Итого:", total)быстрый вывод пары значений; пробел добавится сам
f-строкаprint(f"Итого: {total} руб.")основной способ: текст виден целиком, доступно форматирование
Плюсprint("Итого: " + str(total))почти никогда: требует str() и легко даёт TypeError

Разница между запятой и плюсом в одном: запятая разделяет аргументы функции и сама ставит пробел, плюс склеивает строки и требует, чтобы обе части были строками. Отсюда практическое правило: для вывода — запятая или f-строка, а + оставьте для случаев, когда вам действительно нужно собрать одну строку из нескольких.

§7print() как инструмент отладки

Второе назначение функции — не менее важное, чем первое. Когда программа считает не то, что вы ожидали, print() позволяет заглянуть внутрь и посмотреть, что на самом деле лежит в переменных на этом шаге.

main.pyпроверяем ход вычисления
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}")выведет скобки буквально — забыта буква fprint(f"Возраст: {age}")
print(name) вместо print("name") и наоборотвыведется не то: значение вместо текста или текст вместо значениякавычки — это текст как есть, без кавычек — значение по имени
print("Привет)SyntaxError — не закрыта кавычкакавычки и скобки закрываются парами
Print("Привет")NameError — регистр важен, такого имени нетвсе встроенные функции пишутся строчными
x = print(2 + 2)на экране 4, но в x — Nonex = 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) # пробел ставится сам
f-строка print(f"Имя: {name}") print(f"{n} → {n ** 2}")
Округление при выводе print(f"{price:.2f}") # 1895.83
Пустая строка print()
Проверка при отладке print("x =", x, type(x))

Итог главы

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

Глава 1.3 · Функция print(): вывод данных · Справочник по Python Автор: Макаров Максим Николаевич