Поиск по сайту:

TypeError: невозможно умножить последовательность на не-int типа float [Решенная ошибка Python]


В этой статье вы узнаете, что означает ошибка Python TypeError: can't умножить последовательность на не-int типа float.

Во-первых, я объясню, почему возникает эта ошибка. Вы также узнаете, как устранить ошибку и как ее избежать.

Вот что мы рассмотрим:

  1. Что такое ошибка TypeError: невозможно умножить последовательность на не-int типа float в Python?

    1. Как в Python возникает ошибка TypeError: невозможно умножить последовательность на не-int типа float?
  2. Как устранить ошибку TypeError: невозможно умножить последовательность на ошибку, отличную от int типа float в Python

Что такое TypeError: невозможно умножить последовательность на не-int типа float Ошибка в Python?

В Python есть два типа чисел:

  • целые числа – целые числа, которые могут быть положительными, отрицательными или нулевыми.
  • числа с плавающей запятой – положительные или отрицательные числа с десятичной запятой.

Вы можете умножить целое число на строку, чтобы создать повторяющуюся последовательность символов:

print("Python" * 3)

# output

# PythonPythonPython

Напоминаем, что строки — это любые символы, заключенные в одинарные или двойные кавычки, включая числа:

print("3" * 3)

# output

# 333

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

print("3" * 3.3)

# output

# Traceback (most recent call last):
#  File "main.py", line 1, in <module>
#    print("3" * 3.3)
# TypeError: can't multiply sequence by non-int of type 'float'

Возникает ошибка – в частности, TypeError.

TypeError — это исключение в Python, которое возникает, когда вы пытаетесь обработать тип данных, который не поддерживает эту конкретную операцию.

Как сообщает сообщение об ошибке, вы не можете выполнять умножение между строкой (или последовательностью) и числом с плавающей запятой (или числом с плавающей запятой), поскольку Python не поддерживает эту операцию между этими двумя типами данных.

Как в Python возникает ошибка TypeError: невозможно умножить последовательность на не-int типа float?

Ошибка TypeError: невозможно умножить последовательность на не-int типа float обычно возникает при использовании функции Python input(), которая принимает ввод пользователя. Это связано с тем, что по умолчанию функция input() возвращает введенные пользователем данные в виде строки.

Возьмем следующий гипотетический пример. Допустим, я прошу пользователя ввести свой возраст и сохранить ответ в переменной с именем user_age:

user_age = input("Please enter your age: ")

Я могу проверить тип данных значения, хранящегося в переменной user_age, используя функцию type(), а затем вывести результат на консоль:

user_age = input("Please enter your age: ")

print(type(user_age))

# output

# Please enter your age: 29
# <class 'str'>

Из вывода вы можете видеть, что, хотя я ввел целое число, тип возвращаемых данных имеет тип строки.

Если бы я затем по какой-либо причине захотел умножить возраст пользователя на число с плавающей запятой, я бы получил ошибку TypeError: can't умножить последовательность на не-int типа float:

user_age = input("Please enter your age: ")

print(user_age * 0.5)

# output

# Please enter your age: 29
# Traceback (most recent call last):
#  File "main.py", line 3, in <module>
#    print(user_age * 0.5)
# TypeError: can't multiply sequence by non-int of type 'float'

Как решить ошибку TypeError: невозможно умножить последовательность на не-int типа float Ошибка в Python

Чтобы устранить ошибку TypeError: невозможно умножить последовательность на не-int типа float, преобразуйте строку в число с плавающей запятой, прежде чем умножать ее на число с плавающей запятой.

Как вы видели ранее, следующий код выдает ошибку TypeError: can't умножить последовательность на не-int типа float:

print("3" * 3.3)

# output

# Traceback (most recent call last):
#  File "main.py", line 1, in <module>
#    print("3" * 3.3)
# TypeError: can't multiply sequence by non-int of type 'float'

Если вы преобразуете строку "3" в число с плавающей запятой перед умножением ее на число с плавающей запятой 3.3, ошибки не возникнет.

Чтобы преобразовать строку в число с плавающей запятой, используйте функцию float():

print(float("3") * 3.3)

# output

# 9.899999999999999

И вы можете сделать то же самое, используя функцию input(). Преобразуйте значение, которое вводит пользователь, в число с плавающей запятой, используя функцию float().

Вот как можно переписать пример, используя функцию input(), приведенную ранее:

user_age = float(input("Please enter your age: "))

print(user_age * 0.5)

# output

# Please enter your age: 29
# 14.5

Функция float() преобразует строковое значение, возвращаемое функцией input(), в число с плавающей запятой, и вы можете умножить это значение на число с плавающей запятой.

Заключение

И вот оно! Теперь вы знаете, как устранить ошибку TypeError: невозможно умножить последовательность на не-int типа float в Python!

Я надеюсь, что этот урок был вам полезен.

Чтобы узнать больше о языке программирования Python, ознакомьтесь с сертификацией Python на freeCodeCamp.

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

Спасибо за чтение и удачного кодирования!

Статьи по данной тематике