Ввод и вывод данных в Python

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

В Python встроены мощные инструменты для форматированного ввода и вывода, достаточные для реализации взаимодействия с пользователем в полноценном приложении.

Получение данных input

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

Входные данные в Python 3 обычно сохраняются в переменных или списках, чтобы их можно было обработать. Синтаксис операции ввода выглядит так:

a = input()

Если выполнить данный код в интерактивном режиме в IDLE, курсор переместиться новую строку и программа будет ожидать ввода данных, которые будут записаны в переменную a.

Кроме того, оператор input() позволяет перед запросом ввода вывести какой-либо текст, например:

a = input("Введите своё имя")

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

Однако, часто нужно получить данные определенного типа, например, калькулятор ожидает число, а пользователь вводит строку. Для этого используется приведение типа, в данном случае к целочисленному:

a = int(input("Введите целое число"))

Если пользователь введет строку или дробь, интерпретатор Python возбудит исключение. Поэтому для ввода используют оператор try-except:

try:
    a = int(input("Введите целое число"))
except:
    print("Ошибка, введено не целое число")

Дополнительно про проверку, введено ли число, можно прочитать в отдельной статье.

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

while True:
    try:
        a = int(input("Введите целое число: "))
    except:
        print("Вы ввели не целое число, ошибка")
        continue
    break

Вывод данных print

Вывод используется не только для отображения данных на экране, но и для перенаправления вывода одной программы на ввод другой, или для записи вывода в файл и т. д.

Для вывода данных в Python используется функция print(). С её помощью можно выводить строки, числа, последовательности. Её синтаксис выглядит так:

print("Строка")

print(5)

Интерпретатор Python также позволяет передавать в print() другую функцию:

def sum(a, b):
    return a + b
print(sum(5, 2)) # Выведет 7

В этом случае функция sum посчитает сумму аргументов и вернёт результат. Этот результат будет выведен с помощью print в консоль.

В print() можно передать несколько аргументов:

print("один", "два", 5) # Выведет "один два 5"

Кроме того, строки можно складывать с помощью оператора «+»:

print("один" + "два", 5) # Выведет "одиндва 5"

Однако не всегда нужно выводить что-то на экран. Программисты могут перенаправить вывод программы в файл. Функцию print() имеет необязательный параметр «file», который по умолчанию равен «sys.stdout», то есть выводу на экран. Если программист хочет перенаправить вывод в файл, он должен написать код:

f = open("file.txt", "w") # Открываем файл в режиме запись
print("Строка", file = f) # Выводим "Строка" в файл

Кроме того, если нужно сделать красивое оформление вывода разными цветами, то можно воспользоваться библиотекой colorama или termcolor. Подробно про цветной вывод описано в отдельной статье на сайте.

Пример программы

В программах ввод и вывод взаимосвязаны, например, пользователь вводит данные, программа обрабатывает их и выводит обратно на экран. Даже если программа не консольная, а с графическим интерфейсом, то если пользователь нажал на кнопку «Запустить», он всё равно ввел в программу данные, которые дали сигнал для выполнения какой-либо функции.

Приведём пример консольной программы, которая выполняет операции над числами. То есть осуществляет ввод и вывод данных в консоль на Python 3. Мы вводим два числа, выбираем операцию, которую надо совершить над ними: сложение, вычитание, умножение или деление. Программа вычисляет результат и выводит его.

# Операции над двумя числами
def sum(a, b):
    return a + b
def sub(a, b):
    return a - b
def mult(a, b):
    return a * b
def div(a, b):
    return a / b

def main():
    while True:
        try:
            #Вводим числа
            a = float(input("Введите первое число: "))
            b = float(input("Введите второе число: "))
            c = int(input("Номер операции:\n1) +\n2) -\n3) *\n4) /\n"))
        except:
            print("Нужно ввести число, попробуйте ещё раз ...\n")
            continue # Повторяем ввод, если введено не число
        break # Выходим из цикла, если числа введены правильно
    # Применяем нужную операцию в зависимости от ввода
    cond = {1 : sum(a, b),
            2 : sub(a, b),
            3 : mult(a, b),
            4 : div(a, b)}
    # Выводим результат операции
    print(cond[c])

if __name__ == "__main__":
    main()

Вот пример работы:

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

Также на нашем сайте есть пример калькулятора с графическим интерфейсом. Для этого в ней была использована библиотека Tkinter.