On Nov 23, 10:37 pm, r <rt8...@gmail.com> wrote: > On Nov 23, 11:19 am, astral orange <457r0...@gmail.com> wrote: > > > > > Hi, I am trying to teach myself Python and have a good book to help me > > but I am stuck on something and I would like for someone to explain > > the following piece of code for me and what it's actually doing. > > Certain parts are very clear but once it enters the "def store(data, > > full_name): ...." function and the "def lookup()..." function things > > get a little confusing for me. Specifically, lines 103-108 *and* Lines > > 110-111. > > > Lastly, I am not sure how to print the results I've put into this > > program either, the book I'm reading doesn't tell me. As you can tell, > > I am a beginner and I don't truly understand everything that is going > > on here...a lot, but not all.... > > > Here is the code: > > > 92 def init(data): > > 93 data['first'] = {} > > 94 data['middle'] = {} > > 95 data['last'] = {} > > 96 > > 97 def store(data, full_name): > > 98 names = full_name.split() > > 100 if len(names) == 2: names.insert(1, '') > > 101 labels = 'first', 'middle', 'last' > > 103 for label, name in zip(labels, names): > > 104 people = lookup(data, label, name) > > 105 if people: > > 106 people.append(full_name) > > 107 else: > > 108 data[label][name] = [full_name] > > 109 > > 110 def lookup(data, label, name): > > 111 return data[label].get(name) > > 112 > > 113 > > 114 MyNames = {} > > 115 init(MyNames) > > 116 store(MyNames, 'John Larry Smith') > > 117 lookup(MyNames, 'middle', 'Smith') > > This is a horrible example to show noobs. I think the OP could better > understand this as a class EVEN though the OP may or may not know what > a class *is* yet. > > >>> class Name(): > > def __init__(self, first, middle, last): > self.first = first > self.middle = middle > self.last = last > > >>> name1 = Name('Guido', 'van', 'Rossum') > >>> name1.first > 'Guido' > >>> name1.middle > 'van' > >>> name1.last > 'Rossum' > >>> print name1 > > <__main__.Name instance at 0x029BFD78> > > This time we add a __str__ method, the result will speak louder than > words!! > > >>> class Name(): > > def __init__(self, first, middle, last): > self.first = first > self.middle = middle > self.last = last > def __str__(self): > return '%s %s %s' %(self.first, self.middle, self.last) > > >>> name2 = Name('Terry', 'J', 'Reedy') > >>> name2.first > 'Terry' > >>> name2.middle > 'J' > >>> name2.last > 'Reedy' > >>> print name2 > > Terry J Reedy > > See the difference in the print statements. Now lets have some real > fun and access each sub name by index haha! > > >>> class Name(): > > def __init__(self, first, middle, last): > self.first = first > self.middle = middle > self.last = last > def __str__(self): > return '%s %s %s' %(self.first, self.middle, self.last) > def __len__(self): > return 3 > def __getitem__(self, item): > if item == 0: > return self.first > elif item == 1: > return self.middle > elif item == 2: > return self.last > else: > raise IndexError("Index must be in range 0, 2") > > >>> name = Name('Joe', 'blow', 'scripter') > >>> name[0] > 'Joe' > >>> name[1] > 'blow' > >>> name[2] > 'scripter' > >>> len(name) > > 3 > > WOW, thats more info in a few lines than any tut i ever seen! I wish i > could have seen that in my initial days, could have save some > countless hours of confusion!!! Maybe i am in the wrong line of work? > > Should i keep going...?
Yeah, I don't think the example in the book is the best for someone starting out. I still am "not getting" certain parts of the program so I think I'll move on in hopes that it will *not* came back to haunt me and the book (along with the online tutorial) will help me grab more of the basics of Python programming. As for the "class Name():" example above? Even though I haven't seen exactly what purpose 'self' serves yet I can follow and understand what is going on very easily, that helps out tremendously. Very clearly written...Thank you! And thanks again to everyone... -- http://mail.python.org/mailman/listinfo/python-list