> -----Original Message----- > From: Tutor [mailto:[email protected]] On > Behalf Of Alan Gauld > Sent: Wednesday, August 12, 2015 2:41 AM > To: [email protected] > Subject: Re: [Tutor] a few question about my evolving program > > On 12/08/15 04:23, Clayton Kirkwood wrote: > > > Question 2: > > My current code: > > See "Look here" below. > > If I understand your 'question', your code *should* reduce to this for the > given filename: > > ... > > target_directory_file_list = > > master_directory_file_list[target_directory] > ... > > for current_directory_path in master_directory_file_list.keys(): > > current_file_list = > > master_directory_file_list[current_directory_path] > > > > for current_filename in current_file_list: > > if current_filename in target_directory_file_list: > > > Now, what is your expected output? > And what are you getting? > I'm not sure I understand what Question 2 actually is...
Given the data provided one could see that the current_filename, blah.jpg didn't exist in the important target_directory_file_list of a.jpg, b.jpg, c.jpg Yet the next line of code is executed. crk > > > As you can see the current_filename does not exist in > > target_directory_file list. Yet, I fall through to the next line. > > What does fall through mean? Which line do you fall through to? > > > Yes, the indents are all fine: I > > wouldn't have gotten to running code otherwise. > > Running code does not mean correct code. The indents could all align with > something but not necessarily what you want them to align with. However, I > can't tell since I'm not sure what is actually going on yet. > > > I turned my head upside > > down and still couldn't see why it doesn't work > > I doubt if that would help :-) > > What might help is breaking the code into say 3 helper functions That would > leave the higher level structure clear to see. > > Also, although we normally ask for 'meaningful variable names' > yours are very long which actually makes the code harder to read. > > You could consider shortening some of them, especially those only used > within a loop such as current_.... Just dropping the "current_" would help. It > doesn't really add any extra information. Similarly we know that paths are > made up of directories so just path instead of directory_path probably > works. (Use file_path to explicitly call out file paths if you must - its shorter...) > > As an example consider my shortened code above using shorter names: > > target_file_list = master_directory_file_list[target_directory] > ... > > for path in master_directory_file_list.keys(): > > files = master_directory_file_list[path] > > > > for name in files: > > if name in target_file_list: > > Notice I kept the long name for the master list because it is used in multiple > segments. But those only used in the local loop are implicitly current and > short lived so you don't need a long name. > > Readability is the first step to finding bugs and although your long names may > seem more descriptive their length actually gets in the way of reading the > code structure easily. > IMHO at least... :-) > > hth > -- > Alan G > Author of the Learn to Program web site > http://www.alan-g.me.uk/ > http://www.amazon.com/author/alan_gauld > Follow my photo-blog on Flickr at: > http://www.flickr.com/photos/alangauldphotos > > > _______________________________________________ > Tutor maillist - [email protected] > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor
