我的代码:
def print_item_cost(self):
print((self.item_name, self.item_quantity, self.item_price), end='')
print(int(self.item_price) + int(self.item_quantity))
def __str__(self):
return '%s %d @ $%d = $%d' % (
(self.item_name), (self.item_quantity), (self.item_price),
int(self.item_price) * int(self.item_quantity))
def total(self):
return (self.item_Price() * (self.item_Quantity()))
我得到的错误是:
Traceback (most recent call last):
File "X:\My Documents\Programming assignment 6.py", line 236, in <module>
print_menu(objct)
File "X:\My Documents\Programming assignment 6.py", line 180, in print_menu
objct.print_total()
File "X:\My Documents\Programming assignment 6.py", line 139, in print_total
print("{} {} @ ${} = ${}".format(i.item_Name(), i.item_Quantity(), i.item_Price(), i.total()))
File "X:\My Documents\Programming assignment 6.py", line 47, in total
return (self.item_Price() * (self.item_Quantity()))
TypeError: can't multiply sequence by non-int of type 'str'
我不明白我犯了什么错误。该计划应该增加和增加项目的总成本。
答案 0 :(得分:1)
self.item_Price() * (self.item_Quantity())
如果你正在使用Python 3,因为事实证明单例元组不需要逗号,所以你的右乘数实际上是一个元组。
以某种方式item_Price
返回一个字符串。
您没有提及item_Price
和item_Quantity
的来源,但在__str__
方法中,它们都明确转换为int
。它们都是字符串吗?
答案 1 :(得分:0)
在下面的代码行中,返回序列的方法之一是返回失败的字符串
return (self.item_Price() * (self.item_Quantity()))
首先检查item_Price
item_Quentity
的返回类型并修复它。
也可以尝试使用
price = int(self.item_Price())
qty = int(self.item_Quantity())
return(price * qty)