Le Mon, 27 Apr 2009 23:29:13 -0400, Dan Liang <danlian...@gmail.com> s'exprima ainsi:
> Hi Bob, Shantanoo, Kent, and tutors, > > Thank you Bob, Shantanoo, Kent for all the nice feedback. Exception > handling, the concept of states in cs, and the use of the for loop with > offset helped a lot. Here is the code I now have, based on your suggestions, > and it does what I need: > > ListLines = [ line.rstrip() for line in open('test.txt') ] > > countYes = 0 > countNo = 0 > > for i in range(len(ListLines)): > if ListLines[i].endswith('yes'): > countYes+=1 > print "countYes", countYes, "\t\t", ListLines[i] > > if not ListLines[i].endswith('yes'): > continue > > for offset in (1, 2, 3, 4, 5, 6, 7, 8): > if i+offset < len(ListLines) and ListLines[i+offset].endswith('no'): > > countNo+=1 > > print "countNo", countNo, "\t\t", ListLines[i+offset] It probably works, but there is something uselessly complicated, logically speaking: -1- case ends with 'yes', do -2- case not ends with 'yes', do -3- case ends with 'yes', again, do You'd better group -1- and -3-, no? Moreover, as action -2- is to continue, further code is simplified if -2- is placed first: for i in range(len(ListLines)): if not ListLines[i].endswith('yes'): continue # case line ends with 'yes': process it countYes+=1 print "countYes", countYes, "\t\t", ListLines[i] for offset in (1, 2, 3, 4, 5, 6, 7, 8): if i+offset < len(ListLines) and ListLines[i+offset].endswith('no'): countNo+=1 print "countNo", countNo, "\t\t", ListLines[i+offset] Also, use more than 1 space for indent, and be consistent (set the value in your editor settings and use the TAB key to achieve that); and avoid too many useless blank lines. Denis ------ la vita e estrany _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor