Урок 6 Ввод и вывод

print(), input(), форматирование строк

⏱ ~10 мин чтения· 🚀 Начальный

Вывод на экран — print()

Функция print() выводит данные в консоль:

print("Привет, мир!")        # Привет, мир!
print(5 + 3)                  # 8
print("A", "B", "C")         # A B C

Параметр sep задаёт разделитель между аргументами, end — что печатать в конце:

print("a", "b", "c", sep="-")      # a-b-c
print("Привет", end="!!!\n")       # Привет!!!

Ввод с клавиатуры — input()

input() читает строку, введённую пользователем. Опционально можно передать подсказку:

name = input("Введите имя: ")
print("Привет,", name)   # Привет, Анна

⚠️ Важно: input() всегда возвращает строку. Если нужно число, преобразуйте явно с помощью int() или float().

Ввод строки

Самый простой случай — ввод текста. Результат input() сразу сохраняется в переменную как строка (str), никаких дополнительных преобразований не требуется:

name = input("Введите ваше имя: ")
print(f"Привет, {name}!")           # Привет, Анна!
print(f"Тип переменной name: {type(name)}")  #

f-строки (f-strings). f"текст {выражение}" — это строки, в которые можно подставлять значения переменных и даже целые выражения внутри фигурных скобок {}. Буква f перед открывающей кавычкой включает режим подстановки. Например, f"Привет, {name}!" подставит значение переменной name прямо в строку. Если забыть букву f, строка выведется буквально, включая {name}.

Переменная name хранит строку, поэтому её можно использовать в f-строках, конкатенировать с другими строками и применять строковые методы.

Ввод целого числа (int)

Если пользователь должен ввести целое число (возраст, количество предметов, номер варианта), результат input() нужно обернуть в int():

age = int(input("Сколько вам лет? "))
print(f"Через год вам будет {age + 1}.")       # Через год вам будет 26.
print(f"Тип переменной age: {type(age)}")       # <class 'int'>

# Можно выполнять арифметические операции
print(f"В месяцах: {age * 12}")                 # В месяцах: 300
print(f"В днях (примерно): {age * 365}")        # В днях (примерно): 9125

Без преобразования int() переменная age осталась бы строкой, и age + 1 вызвало бы ошибку (нельзя сложить строку и число).

Ввод вещественного числа (float)

Для ввода дробных чисел (рост, вес, температура, цена) используйте float(). В качестве десятичного разделителя используется точка, а не запятая:

height = float(input("Введите ваш рост (м): "))
print(f"Ваш рост: {height} м")                   # Ваш рост: 1.75 м
print(f"Тип переменной height: {type(height)}")  # <class 'float'>

# Обычные операции с float
bmi = 70 / (height ** 2)
print(f"Ваш ИМТ: {bmi:.1f}")                     # Ваш ИМТ: 22.9

Запятая vs точка. Если пользователь введёт 1,75 (с запятой), float() вызовет ошибку ValueError. Всегда указывайте в подсказке формат числа, например: "Введите ваш рост (м, через точку): ".

Общая схема ввода чисел

Независимо от типа числа, алгоритм одинаков:

  1. Вызвать input() — получить строку.
  2. Обернуть результат в int() или float() — получить число.
  3. Использовать число в вычислениях.
# Общий шаблон для ввода числа:
# переменная = тип(input("подсказка: "))

a = int(input("Введите целое число: "))
b = float(input("Введите дробное число: "))

print(f"Сумма: {a + b}")            # Сумма: 6.5
print(f"Произведение: {a * b}")     # Произведение: 10.0

Совет. Если есть риск, что пользователь введёт не число (буквы, запятую вместо точки, пустую строку), программа упадёт с ошибкой ValueError. Обработку таких ситуаций с помощью try / except мы разберём в одной из следующих глав.

Форматирование строк

Форматирование строк позволяет подставлять значения переменных в текст, управлять шириной полей, количеством знаков после запятой и выравниванием. В современном Python (3.6+) основным способом являются f-строки — они читаются легче всего и работают быстрее аналогов.

f-строки (Python 3.6+, рекомендуется):

name = "Анна"
age = 25
print(f"Меня зовут {name}, мне {age} лет.")       # Меня зовут Анна, мне 25 лет.

# Выражения внутри f-строки
print(f"Через 5 лет будет {age + 5}.")             # Через 5 лет будет 30.

# Форматирование чисел
# Синтаксис: {переменная:Nf} — N знаков после запятой
pi = 3.14159265
print(f"Число π с двумя знаками: {pi:.2f}")   # 3.14
print(f"Число π с тремя знаками:  {pi:.3f}")  # 3.142
print(f"Число π с четырьмя знаками: {pi:.4f}") # 3.1416

# Форматирование результата выражения
print(f"10 / 3 = {10/3:.3f}")    # 3.333
print(f"1 / 2 = {1/2:.3f}")      # 0.500

# ВАЖНО: round() не гарантирует нужное число знаков при выводе
print(round(1/2, 3))   # 0.5 — только один знак, а нужно 0.500
print(f"{1/2:.3f}")    # 0.500 — всегда ровно три знака после запятой

Метод format():

print("Меня зовут {}, мне {} лет.".format(name, age))  # Меня зовут Анна, мне 25 лет.

# Именованные аргументы
print("Меня зовут {n}, мне {a} лет.".format(n="Иван", a=30))  # Меня зовут Иван, мне 30 лет.

Таблица символов

Специальные символы:

КодЗначение
\nНовая строка
\tТабуляция
\\Обратный слеш
\"Двойная кавычка внутри строки