Почему я получаю TypeError: не могу умножить последовательность на non-int типа "float"?
Я печатаю, чтобы получить сумму продажи (по вкладам), умноженную на определенный налог с продаж (0.08), а затем распечатать общую сумму (сумму продажи налога на продажу).
Я столкнулся с этой ошибкой. Кто-нибудь знает, что может быть неправильным или есть какие-то предложения?
salesAmount = raw_input (["Insert sale amount here \n"])
['Insert sale amount here \n']20.99
>>> salesTax = 0.08
>>> totalAmount = salesAmount * salesTax
Traceback (most recent call last):
File "<pyshell#57>", line 1, in <module>
totalAmount = salesAmount * salesTax
TypeError: can't multiply sequence by non-int of type 'float'
Ответы
Ответ 1
raw_input
возвращает строку (последовательность символов). В Python, умножая строку и float, не имеет определенного значения (при умножении строки и целого значения имеет значение: "AB" * 3
is "ABABAB"
, сколько стоит "L" * 3.14
? Пожалуйста, не отвечайте "LLL|"
). Вам нужно проанализировать строку до числового значения.
Возможно, вы захотите попробовать:
salesAmount = float(raw_input("Insert sale amount here\n"))
Ответ 2
Возможно, это поможет другим в будущем - у меня была такая же ошибка, когда вы пытались многократно поплавок и список поплавков. Дело в том, что все здесь говорили о том, чтобы умножить float на строку (но здесь все мои элементы были всплытиями все время), поэтому проблема заключалась в том, что фактически использовался оператор * в списке.
Например:
import math
import numpy as np
alpha = 0.2
beta=1-alpha
C = (-math.log(1-beta))/alpha
coff = [0.0,0.01,0.0,0.35,0.98,0.001,0.0]
coff *= C
Ошибка:
coff *= C
TypeError: can't multiply sequence by non-int of type 'float'
Решение - преобразование списка в массив numpy:
coff = np.asarray(coff) * C
Ответ 3
Проблема заключается в том, что salesAmount устанавливается в строку. Если вы введете переменную в интерпретаторе python и нажмите enter, вы увидите введенное значение, окруженное кавычками. Например, если вы ввели 56.95, вы увидите:
>>> sales_amount = raw_input("[Insert sale amount]: ")
[Insert sale amount]: 56.95
>>> sales_amount
'56.95'
Вы хотите преобразовать строку в float, прежде чем умножать ее на налог с продаж. Я оставлю это для вас, чтобы понять. Удачи!
Ответ 4
Вы не можете умножить строку и число с плавающей запятой вместо того, чтобы попробовать, как показано ниже. Это отлично работает
totalAmount = salesAmount * float(salesTax)
Ответ 5
Я использовал:
print("%s" % a * b)
но: ans = a * b print ("% s% ans) не вернул ошибку