Почему я получаю TypeError: не могу умножить последовательность на не-int типа 'float'? - PullRequest
67 голосов
/ 28 января 2009

Я набираю, чтобы получить сумму продажи (по входным данным), умноженную на определенный налог с продаж (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'

Ответы [ 4 ]

63 голосов
/ 28 января 2009

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

Возможно, вы захотите попробовать:

salesAmount = float(raw_input("Insert sale amount here\n"))
37 голосов
/ 15 декабря 2014

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

Например:

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 голосов
/ 28 января 2009

Проблема в том, что salesAmount устанавливается в строку. Если вы введете переменную в интерпретаторе Python и нажмете Enter, вы увидите введенное значение в кавычках. Например, если вы ввели 56,95, вы увидите:

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

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

0 голосов
/ 03 марта 2019

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

totalAmount = salesAmount * float (salesTax)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...