Функция input()
Иногда приходится работать с данными, которые становятся известны только в процессе выполнения программы. Для пользовательского ввода данных используется команда input()
. Она ожидает от пользователя ввод данных с клавиатуры и возвращает результат в виде строки.
После исполнения данного кода:
x = input()
создастся переменная х
, которая будет ссылаться на строку, введённую с клавиатуры.
А этот код:
a = input()
b = input()
print(a + b)
запросит у пользователя ввод двух значений, на которые затем будут ссылаться переменные a
и b
соответственно, и выведет результат конкатенации двух строковых переменных на экран. Например, если пользователь сначала введёт My
, а затем World
, на выводе получится MyWorld
, а если бы были введены числа и , тогда на экране бы появилась строка 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()
. Любой указанный текст никак не будет влиять на логику работы программы. Нужно это лишь для того, чтобы показать наглядно, что ожидает программа при запросе считывания. В будущих уроках мы иногда будем использовать данную конструкцию.