在Python上制作收银机

2024-05-29 05:02:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python3.6上制作一个商店程序,但是我的代码不起作用。我做了很多修改,现在我遇到了更多的内部编码问题,比如让菜单在循环中运行,直到客户退出程序,以及在列表中创建包含各个项的所有信息的列表。代码在这里可能没有正确缩进,但这更多的是一个复制和粘贴错误。在

代码如下:

class RetailItem:
    def __init__(self):
        self.price = price
        self.units = units
        self.description = description


class CashRegister:
    def __init__(RetailItem, self):
        self.totalprice=0
        self.cart=[]
        self.items=[]
        duck = RetailItem
        duck.description = "Large plush duck"
        duck.units = 3
        duck.price = 6.99

        porcupine = RetailItem
        porcupine.description = "Pink plush porcupine"
        porcupine.units = 5
        porcupine.price = 9.99

        bunny = RetailItem
        bunny.description = "small white plush bunny"
        bunny.units = 7
        bunny.price = 4.99

        self.items=[duck,bunny,porcupine]
        print("Welcome to The Toy Store.\n Selection:\n 1.Duck \n 2.Bunny \n 3.Porcupine")
    def menu(self):
        item = int(input("What would you like to select? "))
        item=+1
        item = self.items[item]
        return item
    def purchase(RetailItem):
        self.items = self.items.append(item)
        self.totalprice = totalprice.append(item.price)
        item.units=item.units-1
        self.cart= self.items.append(item)
        print("You have added"+(item)+"to your cart")
    def get_total(self):
        return("Your total is", self.totalprice)
    def show_item(RetailItem):    
        return(description(RetailItem), units(RetailItem), price(RetailItem))
    def clear_register(self):
        self.totalprice = []
        self.items = []

def main():

^{pr2}$

Tags: 代码selfdefitemsplusdescriptionitemprice
2条回答

似乎def menu(self)不在任何类中,因此它不应该有self参数。拆下它,它应该可以工作了。或者将menu放入一个类中。在

self参数是为类方法保留的。更多信息here

编辑:实际上,如果我理解您的代码,您的menu(self)属于CashRegister类。如果是这样,只需缩进整个menu(self)块。在

class CashRegister:
    def __int__(self,RetailItem):
        self.total= ()
        Duck = RetailItem()
        Duck.description = "Large plush duck"
        Duck.units = 3
        Duck.price = 6.99

        Porcupine = RetailItem()
        Porcupine.description = "Pink plush porcupine"
        Porcupine.units = 5
        Porcupine.price = 9.99

        Bunny = RetailItem()
        Bunny.description = "small white plush bunny"
        Bunny.unitsininv = 7
        Bunny.price = 4.99

    def menu(self):
        print("Welcome to The Toy Store.\n Selection:\n 1.Bunny \n 2.Porcupine \n 3.Duck")
        choice = int(input("What would you like to buy? "))
        if choice==1:
            item = Bunny
        elif choice == 2:
            item = Porcupine
        elif choice==3:
            item = Duck
        else:
            print("Error")

如何处理menu not defined

  • 关键字self用于类内的方法menu是一个 方法在顶层。在

    只需缩进menu,这样它就变成了CashRegister类的方法。

您的程序还有其他问题。

  • 您忘记缩进豪猪和兔子对象,所以它将位于CashRegister__init__

  • 您用choice输入无效。

  • 您的CashRegister C1未正确启动。您需要将其初始化为对象C1 = CashRegister(*some RetailObject*)而不是C1 = CashRegister

  • Bunny.unitsininvunitsininv不作为RetailItem字段存在。

  • CashRegistertotal应该是一个列表。

  • purchaseget_totalshow_itemsclear_register也应该是CashRegisterself的方法。

  • init有一个打字错误:您键入了__int__,而不是

下面是更新的代码,您可以花时间阅读以了解设置收银机所需的内容,并且您只需使用pythonshell对收银机进行购买。在

class RetailItem:
    def __init__(self, price, units, description): 
        self.price = price
        self.units = units
        self.description = description

    def __str__(self):
        string = str(self.description)
        string += ": $" + str(self.price)
        string += " Units:" + str(self.units)
        return string


class CashRegister:
    def __init__(self):
        self.total_items = [] # Should be a List
        self.total_price = 0; # Missing

    def menu(self):
        print("Welcome to The Toy Store.\n Selection:\n 1.Bunny \n 2.Porcupine \n 3.Duck")
        choice = int(input("What would you like to buy? "))
        if choice==1:
            item = Bunny
        elif choice == 2:
            item = Porcupine
        elif choice==3:
            item = Duck
        else:
            print("Error")

    def purchase(self, item: RetailItem):
        self.total_items.append(item.description)
        self.total_price += item.price

    def get_total(self):
        print("Your total items are: ", self.total_items)

    def show_items(self):    
        print("Your total price is: ", self.total_price)

    def clear_register():
        total_price = []
        total_items = 0

相关问题 更多 >

    热门问题