On 6/14/2010 8:08 PM, Lang Hurst wrote:
I'm trying to figure out how to deal with data which will look something like:

   Student:Bob Hurley
   ID: 123456
   Period:4
   Grad_class: 2012
   Credits:
      Algebra C (20P)
            Chapter 1
                 Date: September 14, 2010
                 Grade: 87
                 Credits:1.5
Notes: Probably cheated on final. Really watch on next quiz/test.
            Chapter 2
                 Date: October 31, 2010
                 .
                 .   **and so on**
                 .
      Consumer Math (24G)
            Module 2
                 .
                 .   **more information like above**
                 .

Before deciding on data structures I suggest you give the big picture. Where will data come from? What do you plan to do with it?

Often a case like this is better handled using a relational database. Python happens to come with the sqlite3 module which makes database work quite easy.


So, I just figured that I would have a couple of nested dictionaries.

   bob = Student('123456','Bob Hurley')
   bob.period = 4
   bob.grad_class = 2010
bob['credits']['Algebra C (20P)']={'Chapter 1':{'Date':'September 12, 2010', 'Grade':'87', **and so on**}}

This works, for the most part, from the command line. So I decided to set up a class and see if I could work it from that standpoint (I'm doing this to scratch an itch, and try to learn). My preliminary class looks like:

   class Student:
def __init__(self, ident=' ', name=' ', period=' ', grad_class=' ', subject=' ', notes=' ', credit=' '):
           self.name = name
           self.ident = ident
           self.period = period
           self.notes = notes
           self.grad_class = grad_class
    #      self.credit = {{}} <--- BAD
           self.credit = {}

I'm sure that someone will enlighten me as to where my poor coding skills are especially weak. It's the last line there (self.credit...) which I can't figure out. The credits may be in any of about 30 different subjects (teaching at a continuation high school makes for interesting times).

You should define a class for Credit, which will hold the credit attributes, just like you did for Student. Then assign instances of Credit to entries in self.credit.

If I don't set it to anything, ie, like it is, I get an error

   Stud instance has no attribute '__getitem__'

If I try to leave it available for adding to somewhat dynamically, I get a 'wtf' from python.

Sorry I don't understand these. It is a good idea to post full tracebacks and the code that raises the exception.

--
Bob Gailer
919-636-4239
Chapel Hill NC

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to