Статья Автор: Александр Ф. Алейников

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

Функция input()

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

После исполнения данного кода:

x = input()

создастся переменная х,  которая будет ссылаться на строку, введённую с клавиатуры.

А этот код:

a = input()
b = input()
print(a + b)

запросит у пользователя ввод двух значений, на которые затем будут ссылаться переменные a и b соответственно, и выведет результат конкатенации двух строковых переменных на экран. Например, если пользователь сначала введёт My, а затем World, на выводе получится MyWorld, а если бы были введены числа 5 и 7, тогда на экране бы появилась строка 57.

Функция type()

Функция type() принимает на вход некоторый объект и возвращает тип данных, к которому тот принадлежит.

Данный код:

num = 5
string = "AbC"
print(type(num))
print(type(string))
print(type("XYZ"))
print(type(25))

выведет

<class 'int'>
<class 'str'>
<class 'str'>
<class 'int'>

Действительно, значение переменной num и число 25 относятся к целочисленному типу данных, а значение переменной string и строка "XYZ" к строковому.

Используем эту функцию и узнаем, объект какого типа данных возвращает input():

x = input()
print(type(x))

Код, приведенный выше, напечатает <class 'str'>.

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

Функция int()

Функция int() преобразует переданный в неё объект к целому числу. Она может быть особенно полезна тогда, когда появляется необходимость преобразовать строку, состоящую из цифр, к целочисленному типу.

Данный код:

num_string = "575"
num_integer = int(num_string)
print(type(num_string))
print(type(num_integer))

выведет

<class 'str'>
<class 'int'>

   В Python попытка сложить число со строкой приведёт к конфликту типов.

Этот код:

a = "50"
b = 50
print(a + b)

выведет ошибку

TypeError: can only concatenate str (not "int") to str

Для её избежания нам нужно прежде преобразовать переменные a и b к единому типу.

Если мы хотим получить в результате сумму двух чисел, тогда следует преобразовать a к целочисленному типу, для чего можно воспользоваться функцией int().

Приведенный ниже код:

a = "50"
b = 50
print(int(a) + b)

выведет

100

​При вводе чисел с клавиатуры часто возникает необходимость работать с объектами как с числами, для этого их тоже прямо в момент ввода можно преобразовать к целочисленному типу данных.

Данный код:

a = int(input())
b = int(input())
print(a + b)

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

Примечание. Если передать в качестве аргумента в функцию int() строку, содержащую какие-то символы кроме цифр, будет выведена ошибка, поскольку к данному типу можно преобразовать только объекты, представимые в виде чисел.

Функция str()

Функция str() преобразует переданный в неё аргумент к строке. Её удобно использовать в тех случаях, когда возникает необходимость превратить число в строку для дальнейшей работы с ним и другими строковыми значениями.

Этот код:

num = 101
print(type(num))
string_num = str(num)
print(type(string_num))

выводит

<class 'int'>
<class 'str'>

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

Например, этот код:

my_age = 17
result = "My age = " + str(my_age)
print(result)

выводит

My age = 17

В то время как код:

​my_age = 17
result = "My age = " + my_age
print(result)

приведет к уже знакомой нам ошибке

TypeError: can only concatenate str (not "int") to str

Текст внутри функции input()

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

Рассмотрим следующий код:

a = input('Как тебя зовут?')

При запуске данная программа попросит пользователя ввести данные с клавиатуры (за это отвечает input()). При этом будет выведен на экран текст «Как тебя зовут?». Переменная a будет ссылаться на значение, введённое пользователем, как и при обычном использовании input(). Любой указанный текст никак не будет влиять на логику работы программы. Нужно это лишь для того, чтобы показать наглядно, что ожидает программа при запросе считывания. В будущих уроках мы иногда будем использовать данную конструкцию.

Печать