Типы данных

Python — язык программирования со строгой типизацией. Но что это означает на деле?

Предположим, требуется вывести на экран результат какого-нибудь арифметического действия. Например, сумму двух чисел. Однако, просто выводить число на экран не очень весело и мы хотим добавить к числу какой-то текст, например, «результат равен „. С одной стороны, мы знаем, что оператор „+“ складывает два числа. С другой, что он может склеить две строки в одну. Но что, если нужно склеить строку и число?

result = 10 + 15
text = "Результат равен " + result
print(text)

Такая программа, разумеется, не заработает и выведет на экран следующую ошибку

TypeError: Can't convert int to str implicitly

Дословно эту ошибку можно перевести как «Невозможно неявно преобразовать целое в строку». То есть, Python не может склеить число со строкой по причине того, что это разные типы данных. Это и есть строгая типизация — для того, что бы работало корректно, данные нужно преобразовывать к одному типу.

Кроме строк и целых чисел, в Python есть еще много различных типов данных. Однако, для понимания сути нам достаточно строк и чисел. Чтобы перевести число в строку нужно использовать встроенную в Python функцию str. Такая программа заработает и выведет на экран именно то, что мы хотим

result = 10 + 15
text = "Результат равен " + str(result)
print(text)

А что, если мы захотим сложить числа, которые введет пользователь?

a = input('Введите первое число')
b = input('Введите второе число')
result = a + b
text = "Результат равен " + str(result)
print(text)

Бьюсь об заклад, вывод этой программы может показаться странным, но все сработало именно так, как надо! Если пользователь введет числа 1 и 2 программа выведет на экран следующий текст

Результат равен 12

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

result = "10" + "15"
text = "Результат равен " + result
print(text)

То есть, числа будут «склеены» как строки.

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

a = input('Введите первое число')
b = input('Введите второе число')
result = int(a) + int(b)
text = "Результат равен " + str(result)
print(text)