Подтвердить что ты не робот

Почему я получаю 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'
4b9b3361

Ответ 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) не вернул ошибку