[Courses] [python] Lesson 3: Fun with Strings and Lists

Darrin Goodman darrin.goodman at gmail.com
Thu Jul 14 23:01:59 UTC 2011


Thank you!

On Thu, Jul 14, 2011 at 1:53 PM, Akkana Peck <akkana at shallowsky.com> wrote:

> Darrin Goodman writes:
> > Sorry that it's taken me so long to reply -- been really busy.  Here's my
> > Lesson 3 solution for the histogram:
> >
> > vals = [ 0, 2, 4, 8, 16, 18, 17, 14, 9, 7, 4, 2, 1 ]
> > for n in vals :
> >     for v in range(0, n+1) :
> >         if v == n :
> >             print " "
> >         else :
> >             print "*",
> >
> > After completing the exercise, I took a look to see how others had
> > accomplished this but I did not really notice anyone using range(0, n+1),
> > but it seems to me that this is necessary since the ending range value
> that
> > you specify is really that value minus 1, right?
>
> Good question! And it's good to be thinking along these lines.
> A lot of programming bugs come from people *not* thinking these
> things through.
>
> In this case, though, you don't need n+1. Let's walk through the
> second element in vals, which is 2. Suppose you have for v in range(0, n).
> n is 2, so you're doing:
>    for v in range(0, 2) :
>        print n,
>    print ""
>
> So v starts at 0 and you print an asterisk. Then v is 1 and you
> print a second asterisk. Then v is 2, and we're at the end of the
> range so we stop. You end up with two asterisks printed -- exactly
> what you wanted.
>
> So why does yours work too, even though your range goes to n+1?
> You're going through the loop one more time than if you'd just used
> n -- but on the last time though your loop over the range, you're
> not printing a star that time, just a space (and a newline).
>
> Just goes to show that there are almost always several ways to
> program the same result ...
>
>        ...Akkana
> _______________________________________________
> Courses mailing list
> Courses at linuxchix.org
> http://mailman.linuxchix.org/mailman/listinfo/courses
>


More information about the Courses mailing list