在Python上制作收银机

时间:2018-04-15 05:51:30

标签: python python-3.x class

我试图在Python 3.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():

C1=CashRegister(CashRegister)

C1.menu()

choice=int(input(("Options: \n 1.Add to Cart 2. View item \n 3.Return to Main Menu ")))
if choice==1:
    purchase(item)
if choice==2:
    show_item(item)
    choice=int(input(("Would you like to purchase this item? \n 1. Yes \n 2. No"))
if choice==3:
    C1.menu()
choice=int(input(("Options: \n 1. Add more items to your cart. 2.View cart 3. Quit"))
if choice!= 3:
    if choice==1:
           menu()

2 个答案:

答案 0 :(得分:1)

似乎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")

答案 1 :(得分:1)

如何处理 menu not defined

  • 关键字self用于中的方法。 menu是一个 顶级方法

    只需缩进menu即可成为课程CashRegister的方法。

您的计划还存在其他问题。

  • 您忘记缩进Porcupine和Bunny对象,因此它将位于__init__的{​​{1}}

  • 使用CashRegister输入内容不起作用。

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

  • C1 = CashRegisterBunny.unitsininv并不作为unitsininv字段存在。

  • RetailItem total应为列表。

  • CashRegisterpurchaseget_totalshow_items也应该是clear_register CashRegister的方法。

  • 初始化错误:您输入了self

以下是更新后的代码,您可以花时间阅读以了解设置CashRegister所需的内容,并且可以使用Python Shell向CashRegister进行购买。

__int__