Python
Input в Python: как получить данные от пользователя
input() в Python читает данные, которые пользователь вводит в консоль. Важно помнить: input() всегда возвращает строку, даже если пользователь ввел число
Поэтому после ввода часто нужны .strip(), int(), float() и обработка ошибок
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Самый простой пример
name = input('Ваше имя: ')
print(f'Привет, {name}')
Программа покажет приглашение, дождется ввода и подставит введенный текст в сообщение
Убрать лишние пробелы
name = input('Ваше имя: ').strip()
if name:
print(f'Привет, {name}')
else:
print('имя не введено')
.strip() убирает пробелы по краям. Это помогает отличить нормальное имя от строки из одних пробелов
Ввод числа
raw_age = input('Возраст: ')
age = int(raw_age)
print(f'Через год: {age + 1}')
Если пользователь введет 25, все сработает. Если введет abc, Python выдаст ValueError
Поэтому рабочий вариант лучше писать с try/except
raw_age = input('Возраст: ')
try:
age = int(raw_age)
print(f'Через год: {age + 1}')
except ValueError:
print('Введите возраст числом')
Ввод дробного числа
raw_price = input('Цена: ')
try:
price = float(raw_price)
print(f'Цена со скидкой: {price * 0.9:.2f}')
except ValueError:
print('Введите цену числом')
Для дробных чисел используется float()
Если пользователь вводит числа через запятую, можно заменить запятую на точку:
raw_price = input('Цена: ').replace(',', '.')
price = float(raw_price)
Повторять запрос до правильного ввода
while True:
raw_age = input('Возраст: ')
try:
age = int(raw_age)
break
except ValueError:
print('Введите число, например 25')
print(f'Возраст принят: {age}')
Цикл продолжается, пока пользователь не введет корректное число
Функция для безопасного ввода
def read_positive_int(prompt):
while True:
raw = input(prompt)
try:
value = int(raw)
except ValueError:
print('нужно ввести целое число')
continue
if value <= 0:
print('число должно быть больше нуля')
continue
return value
count = read_positive_int('Количество: ')
print(f'Принято: {count}')
Такой подход полезен, когда ввод числа нужен в нескольких местах программы
Мини-проект: калькулятор заказа
title = input('Товар: ').strip()
price = float(input('Цена: '))
count = int(input('Количество: '))
total = price * count
print(f'{title}: {count} x {price:.2f} = {total:.2f}')
После первого запуска добавьте проверки:
- товар не должен быть пустым
- цена должна быть больше нуля
- количество должно быть целым положительным числом
- неверный ввод не должен ломать программу без понятного сообщения
Частые ошибки
- складывать строку из
input()с числом безint()илиfloat() - не убирать пробелы через
.strip() - не проверять пустой ввод
- писать огромный диалог без функций
- не обрабатывать
ValueError - думать, что
input()подходит для паролей и секретов в любой ситуации
Что читать дальше
Для вывода результата рядом пригодится Что такое print в Python
Для условий и проверок откройте If, else и elif в Python
input() получает строку от пользователя. Чтобы работать с числами, строку нужно преобразовать через int() или float()
Для нормального консольного ввода почти всегда нужны .strip(), проверка пустых значений и try/except для ошибок преобразования