错误:不能将序列乘以类型' str'的非int。

时间:2017-11-15 21:05:54

标签: python

我的代码:

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'

我不明白我犯了什么错误。该计划应该增加和增加项目的总成本。

2 个答案:

答案 0 :(得分:1)

self.item_Price() * (self.item_Quantity())

如果你正在使用Python 3,因为事实证明单例元组不需要逗号,所以你的右乘数实际上是一个元组。

以某种方式item_Price返回一个字符串。

您没有提及item_Priceitem_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)