[python] 왜 TypeError : ‘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'



답변

raw_input문자열 (문자열)을 반환합니다. 파이썬에서 문자열과 부동 소수점을 곱하면 정의 된 의미가 없습니다 (문자열과 정수를 곱하면 의미가 있습니다 : "AB" * 3is "ABABAB"; 얼마 "L" * 3.14입니까? 회신하지 마십시오"LLL|" ). 문자열을 숫자 값으로 구문 분석해야합니다.

시도해 볼 수 있습니다.

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


답변

아마도 이것은 미래에 다른 사람들에게 도움이 될 것입니다-여러 개의 float와 float 목록을 시도하는 동안 동일한 오류가 발생했습니다. 문제는 여기에있는 모든 사람들이 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


답변

문제는 salesAmount가 문자열로 설정된다는 것입니다. 파이썬 인터프리터에 변수를 입력하고 엔터를 치면 따옴표로 묶인 값이 입력 된 것을 볼 수 있습니다. 예를 들어 56.95를 입력하면 다음과 같이 표시됩니다.

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

판매 세를 곱하기 전에 문자열을 부동 소수점으로 변환 할 수 있습니다. 나는 당신이 알아낼 수 있도록 남겨 둘 것입니다. 행운을 빕니다!


답변

아래와 같이 시도하는 대신 string과 float를 곱할 수 없습니다.

totalAmount = salesAmount * float(salesTax)


답변