Piszę, aby uzyskać kwotę sprzedaży (przez wejście) do pomnożenia przez zdefiniowany podatek od sprzedaży (0,08), a następnie wydrukować całkowitą kwotę (podatek od sprzedaży razy kwota sprzedaży).
Mam ten błąd. Czy ktoś wie, co może być nie tak lub ma jakieś sugestie?
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'
Może to pomoże innym w przyszłości - miałem ten sam błąd podczas próby zwielokrotnienia pływaka i listy pływaków. Chodzi o to, że wszyscy tutaj mówili o mnożeniu liczby zmiennoprzecinkowej przez ciąg (ale tutaj cały mój element był zmiennoprzecinkowy), więc problem polegał na używaniu operatora * na liście.
Na przykład:
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
Błąd:
coff *= C TypeError: can't multiply sequence by non-int of type 'float'
Rozwiązanie - przekonwertuj listę na tablicę numpy:
źródło
coff = [i * c for i in coff]
Problem polega na tym, że salesAmount ustawiono na ciąg. Jeśli wprowadzisz zmienną do interpretera Pythona i naciśniesz Enter, zobaczysz wprowadzoną wartość w cudzysłowie. Na przykład, jeśli wpiszesz 56,95, zobaczysz:
>>> sales_amount = raw_input("[Insert sale amount]: ") [Insert sale amount]: 56.95 >>> sales_amount '56.95'
Będziesz chciał przekonwertować ciąg na liczbę zmiennoprzecinkową przed pomnożeniem go przez podatek od sprzedaży. Zostawię ci to, żebyś się domyślił. Powodzenia!
źródło
Nie możesz mnożyć stringów i float. Zamiast tego spróbuj jak poniżej. Działa dobrze
źródło