Ситуация: мы пишем простой код на Python, который запрашивает у пользователя два числа, а нам нужно их перемножить между собой. Мы знаем, что для ввода данных в Python используется команда input()
— она выводит текст и ждёт, пока пользователь что-то напишет. Наша задача — взять эти числа и вывести результат:
# запрашиваем первое число
a = input('Введите первое число: ')
# потом второе
b = input('Введите второе число: ')
# выводим результат умножения
print('Произведение этих чисел равно ' + a * b)
При запуске компьютер выдаёт ошибку:
❌ TypeError: can't multiply sequence by non-int of type 'str'
Очень странно, ведь мы точно сделали всё как нужно и ввели целые числа.
Что это значит: интерпретатор сообщает, что он не может перемножить между собой строки, потому что это не числа и непонятно, как это можно умножать.
Когда встречается: когда компьютер пытается перемножить переменные, в которых нет ни одного числа. Он умеет умножать строки на число (и тогда получается одна и та же строка много раз), но если обе переменные — строки, то компьютер теряется и выдаёт ошибку.
Что делать с ошибкой TypeError: can't multiply sequence by non-int of type 'str'
В нашем коде вся проблема в том, что результат ввода мы получаем в виде строк, а не в виде чисел. Даже если мы введём число 10, то Python это запомнит как '10', то есть как строку. Это особенность команды input()
— она все ответы воспринимает как строки.
Чтобы избавиться от этой ошибки, нам нужно принудительно перевести строки в числа с помощью команды int()
:
# запрашиваем первое число
a = input('Введите первое число: ')
# потом второе
b = input('Введите второе число: ')
# выводим результат умножения
print('Произведение этих чисел равно ' + int(a) * int(b))
Но если мы запустим сейчас этот код, то получим новую ошибку, которую мы уже разбирали — TypeError: can only concatenate str (not "int") to str. Она означает, что мы пытаемся соединять строки с числами, а нужно — тоже со строками. Для этого используем команду str()
— она преобразует результат произведения чисел обратно в строку.
Теперь всё в порядке и работает так:
- Мы запрашиваем у пользователя числа и сохраняем их как строку.
- Командой int() мы переводим их в числовой вид, чтобы перемножить друг с другом.
- Командой str() переводим результат умножения обратно в строку, чтобы можно было вывести результат вместе с поясняющей фразой.
# запрашиваем первое число
a = input('Введите первое число: ')
# потом второе
b = input('Введите второе число: ')
# выводим результат умножения
print('Произведение этих чисел равно ' + str(int(a) * int(b)))