Самоучитель
Типы данных
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)