Ввод данных в Python: примеры и упражнения

Раздел: Обучение Python -> Упражнения на ввод

Работа с функцией input() в Python

Функция input() является основным способом получения данных от пользователя в командной строке. Она всегда возвращает строку (str). Для числовых вычислений требуется преобразование типов.

age_str = input("Сколько вам лет? ")
age = int(age_str)
print(f"Через 10 лет вам будет {age + 10}")

Input python задачи (задачи на input в python)

Сколько вам лет? 25
Через 10 лет вам будет 35

Такое преобразование может вызвать ошибку, если пользователь ввел не число. Об этой проблеме поговорим далее.

Как ввести несколько значений через пробел?

Используйте метод split() для разделения строки на список.

data = input("Введите три числа через пробел: ").split()
a, b, c = map(int, data)
print(f"Сумма: {a+b+c}")
Введите три числа через пробел: 10 20 30
Сумма: 60

Проблема: если пользователь введет меньше или больше чисел, возникнет ошибка при распаковке. Решение: проверять длину списка, или использовать звездочку для захвата остатка.

data = input("Введите числа: ").split()
if len(data) >= 3:
    a, b, *rest = map(int, data)
    print(f"Первые два: {a}, {b}, остальные: {rest}")
else:
    print("Нужно хотя бы три числа")

Как защититься от ошибок при преобразовании типов?

Оберните преобразование в блок try-except.

try:
    age = int(input("Введите возраст: "))
except ValueError:
    print("Ошибка: необходимо ввести целое число")
    age = 0

Типичная ошибка: забывают, что input возвращает строку, и сразу пытаются сравнить с числом, не преобразовав. Это вызовет TypeError или неправильное сравнение (строки сравниваются лексикографически).

Как вводить данные до тех пор, пока не будет введено корректное значение?

Организуйте бесконечный цикл с break при успешном вводе.

while True:
    try:
        num = float(input("Введите положительное число: "))
        if num > 0:
            break
        else:
            print("Число должно быть положительным.")
    except ValueError:
        print("Некорректный ввод. Попробуйте снова.")
print(f"Вы ввели: {num}")

Как ввести несколько строк, пока не встретится пустая строка?

Используйте цикл, собирая строки в список до пустого ввода.

lines = []
while True:
    line = input()
    if line == "":
        break
    lines.append(line)
print("Введенные строки:")
for i, line in enumerate(lines, 1):
    print(f"{i}: {line}")
Привет
мир
(пустая строка)
Введенные строки:
1: Привет
2: мир

Как ввести число с плавающей точкой из строки с запятой?

Замените запятую на точку перед преобразованием.

raw = input("Введите число (разделитель может быть запятой): ")
normalized = raw.replace(",", ".")
try:
    value = float(normalized)
    print(f"Вы ввели {value}")
except ValueError:
    print("Невозможно преобразовать.")

Как ввести пароль без отображения символов?

Используйте модуль getpass. Хотя это не чистый input, но часто требуется.

import getpass
password = getpass.getpass("Введите пароль: ")
print("Пароль принят.")

Почему не стоит использовать input для пароля?

Потому что символы отображаются на экране, что небезопасно. Модуль getpass скрывает ввод.

Как ввести список чисел через пробел, но некоторые числа могут быть дробными?

Используйте map(float, ...) и обработайте возможные ошибки.

nums = input("Введите числа (через пробел): ").split()
result = []
for item in nums:
    try:
        result.append(float(item))
    except ValueError:
        print(f"'{item}' не является числом, пропускаем.")
print("Список чисел:", result)

Как ввести многострочный текст до определенного маркера?

Можно запрашивать строки до ввода ключевого слова, например 'END'.

print("Введите строки (для завершения введите END):")
lines = []
while True:
    line = input()
    if line.strip().upper() == "END":
        break
    lines.append(line)
print("Вы ввели:")
print('\n'.join(lines))

Как ввести данные в формате 'ключ=значение'?

Разделите строку по '=', обрезав лишние пробелы.

pair = input("Введите пару ключ=значение: ")
if '=' in pair:
    key, value = pair.split('=', 1)
    key = key.strip()
    value = value.strip()
    print(f"Ключ: '{key}', Значение: '{value}'")
else:
    print("Неверный формат.")

Типичная ошибка: не учитываются пробелы до и после знака равенства. Используйте strip.

Расширенные примеры работы с input()

Здесь представлены более сложные сценарии, которые могут встретиться в реальных задачах. Каждый пример сопровождается кодом и выводом.

Пример
# Пример 1: Интерактивный калькулятор с поддержкой операций
print("Калькулятор. Введите 'exit' для выхода.")
while True:
    expr = input("Введите выражение (например 2+3): ")
    if expr.lower() == 'exit':
        break
    try:
        # Безопаснее использовать eval только в учебных целях
        result = eval(expr)
        print(f"Результат: {result}")
    except Exception as e:
        print(f"Ошибка: {e}")
Введите выражение (например 2+3): 5*5
Результат: 25
Введите выражение (например 2+3): exit
Пример
# Пример 2: Ввод параметров сети в формате IP:порт:протокол
input_str = input("Введите IP:порт:протокол (например 192.168.1.1:8080:tcp): ")
parts = input_str.split(':')
if len(parts) == 3:
    ip, port_str, protocol = parts
    try:
        port = int(port_str)
        if not (0 < port < 65536):
            raise ValueError
        print(f"IP: {ip}, Port: {port}, Protocol: {protocol}")
    except ValueError:
        print("Порт должен быть числом от 1 до 65535")
else:
    print("Требуется три части, разделенных двоеточием.")
Введите IP:порт:протокол (например 192.168.1.1:8080:tcp): 10.0.0.1:80:udp
IP: 10.0.0.1, Port: 80, Protocol: udp
Пример
# Пример 3: Ввод CSV строки с использованием модуля csv
import csv, io
csv_line = input("Введите CSV строку (поля в кавычках если содержат запятые): ")
reader = csv.reader(io.StringIO(csv_line))
for row in reader:
    print("Полученные поля:", row)
    for i, field in enumerate(row):
        print(f"  Поле {i+1}: {field}")
Введите CSV строку (поля в кавычках если содержат запятые): "Иванов, Иван", 30, Москва
Полученные поля: ['Иванов, Иван', ' 30', ' Москва']
  Поле 1: Иванов, Иван
  Поле 2:  30
  Поле 3:  Москва
Пример
# Пример 4: Ввод даты с проверкой корректности
from datetime import datetime
date_str = input("Введите дату в формате ДД.ММ.ГГГГ: ")
try:
    date_obj = datetime.strptime(date_str, "%d.%m.%Y")
    print(f"Введена дата: {date_obj.strftime('%d %B %Y')}")
except ValueError:
    print("Некорректный формат даты.")
Введите дату в формате ДД.ММ.ГГГГ: 31.12.2024
Введена дата: 31 December 2024

Задачи на input в Python - comments

En
Input python задачи (python)