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

3 ответов:

raw_input возвращает строку (последовательность символов). В Python умножение строки и поплавка не имеет определенного значения (в то время как умножение строки И целого числа имеет значение: "AB" * 3 и "ABABAB"; сколько стоит "L" * 3.14 ? Пожалуйста, не отвечайте "LLL|"). Вам нужно разобрать строку на числовое значение.

вы можете попробовать:

salesAmount = float(raw_input("Insert sale amount here\n"))

возможно, это поможет другим в будущем - у меня была такая же ошибка при попытке многократного поплавка и списка поплавков. Дело в том, что все здесь говорили о умножении поплавка со строкой (но здесь все мои элементы были плавающими), поэтому проблема заключалась в использовании оператора * в списке.

например:

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

проблема в том, что salesAmount устанавливается в строку. Если вы введете переменную в интерпретаторе python и нажмете enter, вы увидите введенное значение, окруженное кавычками. Например, если вы ввели 56.95 вы увидите:

>>> sales_amount = raw_input("[Insert sale amount]: ")
[Insert sale amount]: 56.95
>>> sales_amount
'56.95'

вы хотите преобразовать строку в float, прежде чем умножать ее на налог с продаж. Я оставлю это для вас, чтобы выяснить. Удачи вам!

Comments

    Ничего не найдено.