Hey Everybody,

I took Kent's advice and changed the design of the script.  Tell me what you 
think!

#!/usr/bin/python

class Widget(object):
    def __init__(self,widget_number):
        self.widget_number = widget_number
        #print "Created Widget %d" % widget_number

class Cart(object):
    def __init__(self,name):
        self.name = name
        print "Created " + self.name
        
    def add_widgets(self,number_widgets):
        for n in range(number_widgets):
            widget = Widget(n + 1)
        print "I put %d widgets in the cart!" % number_widgets

class User(object):
    def __init__(self,name="John Doe"):
        self.name = name
        print "Hello " + self.name + "!"
        self.cart_number = 0
        self.cart_list = []
        self.cart_dict = {}

    def buy_widgets(self,cart_name,number_widgets):
        cart = Cart(cart_name)
        self.cart_number = self.cart_number + 1
        self.cart_list.append(cart.name)
        cart.add_widgets(number_widgets)
        self.cart_dict[cart_name] = number_widgets
        
    def carts_info(self):
        print "You have %d carts!" % self.cart_number
        for i, c in enumerate(self.cart_list):
            print "%d) %s has %d widgets" % (i+1, c, self.cart_dict[c]) 
        
        
if __name__ == '__main__':
    user_name =  raw_input("Enter your name: ")
    user = User(user_name)
    
    print "You can "
    print "1) Buy a widget"
    print "2) List your carts"
    print "3) Quit"
    
    while True:
        
        while True:
            choice = raw_input("Pick an option: ")
            try:
                choice_int = int(choice)
                break
            except ValueError:
                print "Invalid choice!"
                print "Try again!"
    
        if choice_int == 1: 
            cart_name = raw_input("Enter the name of your cart: ")
            number_widgets = raw_input("How many widgets do you want? ")
            number_widgets_int = int(number_widgets)
            user.buy_widgets(cart_name,number_widgets_int)
        elif choice_int == 2:
            user.carts_info()
        elif choice_int == 3:
            print "Goodbye!"
            break
        else:
            print "Invalid Choice!"
            print "Try Again!"
   



--- On Tue, 8/12/08, Kent Johnson <[EMAIL PROTECTED]> wrote:

> From: Kent Johnson <[EMAIL PROTECTED]>
> Subject: Re: [Tutor] ecommerce.py
> To: [EMAIL PROTECTED]
> Cc: tutor@python.org
> Date: Tuesday, August 12, 2008, 4:01 AM
> On Tue, Aug 12, 2008 at 1:41 AM, Christopher Spears
> <[EMAIL PROTECTED]> wrote:
> > I am not sure how to handle putting Widgets into a
> Cart.  Somehow, I need the user to be able to select the
> Cart he or she wants and then put Widgets in it.  Any hints?
> 
> You figured out how to put a Cart in a User, I guess you
> want
> something similar - a cart should have a list of widgets.
> 
> Maybe the problem asks for it, but usually an online shop
> has just one
> cart per user and the cart is created for you when you ask
> to buy
> something. If you use that design it might be simpler.
> 
> Kent


      
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to