판매 금액 (입력 기준)에 정의 된 판매 세 (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" * 3
is "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)