Ввод данных
До сих пор наши программы всегда делали одно и то же: числа были записаны прямо в коде. Настоящая программа получает данные снаружи — от пользователя или из файла — и работает с любыми значениями. В этой теме научимся читать входные данные.
Как задачи проверяются
В задачах этого курса твоя программа получает входные данные и должна напечатать выходные данные. Проверяющая система запускает программу много раз на разных входах и сравнивает её вывод с правильным ответом.
| Входные данные | Программа | Выходные данные |
|---|---|---|
| то, что программа читает | твой код | то, что программа печатает через print |
Поэтому важно: программа должна печатать только ответ — без приветствий, пояснений и подсказок.
input() — прочитать одну строку
Функция input() ждёт, пока во входных данных появится строка, и возвращает её как текст (тип str).
name = input()
print("Привет,", name)
Если во входных данных строка Ада, программа напечатает Привет, Ада.
Каждый вызов input() читает следующую строку. Две строки входа — два вызова:
city = input()
country = input()
print(city, "находится в стране", country)
| Вход | Вывод |
|---|---|
Казань<br>Россия |
Казань находится в стране Россия |
⚠️ Не пиши внутри скобок подсказку вроде
input("Введите имя: "). Этот текст напечатается в вывод, и проверяющая система посчитает ответ неправильным.
Строка — это ещё не число
input() всегда возвращает текст, даже если ввели цифры. С текстом арифметика работает не так, как с числами:
x = input() # ввели 2
y = input() # ввели 3
print(x + y) # 23 — строки склеились!
Чтобы получить число, строку превращают в него функцией int() (от integer — «целое»):
x = int(input()) # 2 — уже число
y = int(input()) # 3
print(x + y) # 5
Запись int(input()) читается изнутри наружу: сначала input() читает строку, потом int() превращает её в целое число.
Для дробных чисел есть float():
price = float(input()) # ввели 99.5
print(price * 2) # 199.0
Пример: программа читает возраст и печатает, сколько человеку исполнится через 10 лет.
age = int(input())
print(age + 10)
Если забыть int(), получится ошибка: Python не умеет складывать строку с числом и сообщит TypeError: can only concatenate str (not "int") to str. Увидишь такую ошибку — проверь, превратил ли ты строку в число.
Несколько чисел в одной строке
Часто во входных данных несколько чисел записаны в одной строке через пробел, например 4 9. Один int(input()) здесь не сработает: строку "4 9" нельзя превратить в одно число.
Для этого случая запомни готовую конструкцию:
a, b = map(int, input().split())
Как она работает, по шагам:
input()читает строку"4 9";.split()разрезает её по пробелам на части"4"и"9";map(int, ...)превращает каждую часть в целое число;a, b = ...раскладывает результаты по переменным:a = 4,b = 9.
Подробно split и map разберём в теме про списки, а пока используй эту строку как готовый инструмент. Количество переменных слева должно совпадать с количеством чисел в строке:
x, y, z = map(int, input().split()) # строка вида: 10 20 30
print(x - y + z) # 20
Если чисел в строке больше или меньше, чем переменных, будет ошибка ValueError.
Разбираем формат входных данных
Перед тем как писать код, внимательно прочитай раздел «Входные данные» в условии и ответь себе на два вопроса:
- Сколько строк во входных данных? Столько раз и нужно читать.
- Что в каждой строке? Одно число —
int(input()), несколько чисел —map(int, input().split()), текст — простоinput().
Например, условие говорит: «В первой строке записано одно число — количество учеников. Во второй строке через пробел — рост самого низкого и самого высокого ученика». Тогда чтение выглядит так:
count = int(input())
low, high = map(int, input().split())
Несколько ответов
Если нужно вывести несколько чисел в разных строках, вызывай print несколько раз. Если в одной строке через пробел — передай их в один print через запятую:
w, h = map(int, input().split())
print(w + h) # первая строка вывода
print(w - h) # вторая строка вывода
print(w, h, w * h) # третья строка: три числа через пробел
Порядок важен: печатай ответы ровно в том порядке, который указан в разделе «Выходные данные».
Большие числа
В Python целые числа могут быть сколь угодно большими: 10**18 или ещё больше посчитается точно. Поэтому если в ограничениях стоят числа вроде 109, беспокоиться о переполнении не нужно — в отличие от многих других языков.
Итог
input()читает одну строку входных данных как текст;int(input())— прочитать целое число,float(input())— дробное;a, b = map(int, input().split())— прочитать несколько чисел из одной строки;- сначала разбери формат входа, потом пиши код;
- печатай только ответ, без лишних слов.