for loop

mensanator at aol.com mensanator at aol.com
Mon Oct 22 19:05:48 EDT 2007


On Oct 22, 5:37 pm, "mensana... at aol.com" <mensana... at aol.com> wrote:
> On Oct 22, 5:22 pm, Marc 'BlackJack' Rintsch <bj_... at gmx.net> wrote:
>
>
>
>
>
> > On Mon, 22 Oct 2007 18:17:56 -0400, Shawn Minisall wrote:
> > > #Intro
> > >     print "*********************************************"
> > >     print  "WELCOME TO THE POPULATION GROWTH CALCULATOR"
> > >     print "*********************************************"
>
> > >     print "This program will predict the size of a population of organisms."
> > >     print
> > >     print
> > >     organisms=input("Please enter the starting number of organisms: ")
>
> > >     increase=input("Please enter the average daily population increase
> > > as a percentage (20% = .20): ")
>
> > >     days=input("Please enter the number of days that they will multiply: ")
>
> > > print "         Day                                    Population"
> > > print "----------------------------------------------------------"
>
> > > for p in range (days):
>
> > >     population = organisms * population * increase
>
> > >     print days,
>
> > >     print "\t\t\t\t",population
>
> > > I'm having problems with my for loop here to calculate estimated
> > > population output to a table.  Instead of knowing how much I want to
> > > loop it, the loop index is going to be whatever number of days the user
> > > enters.  When I run my program, it asks the 3 questions above but then
> > > just dead stops at a prompt which leads me to believe there's something
> > > wrong with my loop.
>
> > It should not run at all as it is indented inconsistently.  If that
> > problem is corrected it will stop with a `NameError` because you try to
> > read `population` before anything was assigned to it.
>
> > Ciao,
> >         Marc 'BlackJack' Rintsch
>
> Also, I would guess that you want to print p, not days

Oh, and your calculation is incorrect. You don't multiply by
organisms in every loop iteration, organisms is the initial
value of population, so you can solve the "Name" error by doing
population = organisms before the for..loop.

And since you're asking for an increase, you don't multiply by the
percent (as that would decrease the population), but instead by
1+increase.

Also, does day==0 represent the first day of increase or the
initial value? One would normally expect day==0 to be the initial
value, but as written, day==0 is the first day of increase. I
would use xrange(1,days+1) instead.

Lastly, you can't have a fraction of an organism, right? You might
want to print your floating point population rounded to an integer.

population = organisms
for p in xrange(1,days+1):
  population = population * (1 + increase)
  print p,
  print "\t\t\t\t%0.0f" % (population)

##  *********************************************
##  WELCOME TO THE POPULATION GROWTH CALCULATOR
##  *********************************************
##  This program will predict the size of a population of organisms.
##
##
##  Please enter the starting number of organisms: 100
##  Please enter the average daily population increase as a percentage
(20% = .20): 0.25
##  Please enter the number of days that they will multiply: 8
##           Day                                    Population
##  ----------------------------------------------------------
##  1 				125
##  2 				156
##  3 				195
##  4 				244
##  5 				305
##  6 				381
##  7 				477
##  8 				596





More information about the Python-list mailing list