Добавьте класс ShoppingCart и функции addToCart, itemCount и isEmpty в Python - PullRequest
0 голосов
/ 27 апреля 2018

Я получаю задание, и я борюсь с ним. Он уже предоставляет класс транзакции и свою собственную функцию. Задача состоит в том, чтобы добавить класс ShoppingCart и следующие его функции: addToCart, removeNextItem, itemCount, isEmpty.

Класс транзакции уже определил / назвал эти подлежащие добавлению класс и функции, поэтому должен следовать этим требованиям Классовой транзакции. Ближайший пример можно найти по адресу Корзина покупок Python добавить в корзину, получить общее количество единиц товара , но все же есть большая разница.

Я попытался добавить необходимый класс / функции, как показано ниже, но я чувствую, что это еще далеко.

class Transaction:

    # Constructor. Takes a shoppingCart upon which it will base the transaction.
    def __init__(self, sc):
        self.shoppingCart = sc


    def getTransactionTotal(self):

        itemList = ""
        totalCost = 0.0


        while not self.shoppingCart.isEmpty():


            itemName, costPerItem, quantity = self.shoppingCart.removeNextItem()

            itemList += (str(quantity) + " × " + str(itemName) + "\n")

            totalCost += (costPerItem * quantity)

        return itemList, totalCost


    def isValidTransaction(self):

        return self.shoppingCart.itemCount() > 0

класс ShopppingCart

class ShoppingCart(object):
    def __init__(self):
        self.content = dict()



    def addToCart(self, name, price, qty):
        if name not in self.content:
            self.content.update({name: (name, price, qty)})
            return
        for k, v in self.content.get(name).items():
            if k == 'qty':
                total_qty = v.qty + qty
                if total_qty:
                    v.qty = total_qty
                    continue
                #self.remove_item(k)
                self.removeNextItem(k)
            else:
                v[k] = item[k]


     #def remove_item(self, key):
    def removeNextItem(self, key):
        self.content.pop(key)

    def itemCount(self):
       for k, v in self.content.get(name).items():
           total_qty = v.qty + qty
        return total_qty

    def isEmpty()

Функция тестера.

def main():


    sc = ShoppingCart()

    sc.addToCart("Dijon Ketchup", 4.99, 1)
    sc.addToCart("Van Gogh Doodle", 99.99, 1)
    sc.addToCart("Irregularly Shaped Donut", 0.50, 1)

    sc.addToCart("Poodle", 25.00, 3)
    sc.addToCart("Noodle", 0.99, 10)
    sc.addToCart("Yodel", 2.50, 5)


    trans = Transaction(sc)



    itemizedList, total = trans.getTransactionTotal()


    receipt = "Items\n-------------------\n" + itemizedList
    receipt += "\nTotal Cost: $" + str(total) + "\n\n"


    receipt += "Manually tallied total: $"
    manualTotal = 4.99 + 99.99+ 0.5 + (3 * 25) + (10 * 0.99) + (5 * 2.5)


    receipt += str(manualTotal)

    print(receipt)

    #else:
       # print("Your cart is empty.")


if __name__ == "__main__":
    main()
...