我是一名玩python的java程序员。所以,如果这看起来有点新手,那是因为它是。忍受我。
我正在尝试计算并从项目的总价格中减去10%。但是当我这样做时,它告诉我有数据类型不匹配。我知道在Java中我只使用nextInt()来区分类型和Scanner,我尝试使用Decimal()和int(),但解释器告诉我itemName的类型无法识别。我认为python在输入中内置了一个Scanner,可以检测原始字符串输入。
请帮忙
<code>
from decimal import Decimal
itemName = input()
itemPrice = Decimal(input())
itemQuantity = int(input())
if itemQuantity <= 10:
print(itemQuantity,'x',itemName,'@ $',itemPrice)
print('Total: $',itemQuantity*itemPrice)
else:
discountMultplier = 0.1
print(itemQuantity,'x',itemName,'@ $',itemPrice)
print('Subtotal: $',itemQuantity*itemPrice)
print('-10% Discount: $',(itemQuantity*itemPrice)*discountMultiplier)
print('Total: $',itemQuantity*itemPrice-((itemQuantity*itemPrice)*discountMultiplier))</code>
答案 0 :(得分:1)
你得到的原因:
Traceback (most recent call last):
File "/Users/Tadhg/Documents/test.py", line 13, in <module>
print('-10% Discount: $',(itemQuantity*itemPrice)*discountMultiplier)
TypeError: unsupported operand type(s) for *: 'decimal.Decimal' and 'float'
是因为Decimal
个对象(itemPrice)不能乘以float
个对象(discountMultiplier),因为错误信息非常明显。
简短解决方案,将discountMultiplier设为十进制:
discountMultplier = Decimal('0.1')
# ^ you are missing an i here
虽然因为上面提到的拼写错误我实际上得到了一个NameError:
Traceback (most recent call last):
File "/Users/Tadhg/Documents/test.py", line 13, in <module>
print('-10% Discount: $',(itemQuantity*itemPrice)*discountMultiplier)
NameError: name 'discountMultiplier' is not defined
因此,请更多地关注您的错误消息,因为它们非常有用。