for loop

mensanator at aol.com mensanator at aol.com
Tue Oct 23 00:38:55 EDT 2007


On Oct 22, 9:12?pm, Shawn Minisall <trekker... at comcast.net> wrote:
> Thanks, everyone!  Using everyone's suggestions and points, the program
> is working great now.  

Actually, it's not. I assume not printing the population
was a copy error.

But, by adding the "if (p>1):", you have now made
day 1 the initial population, so if you ask for
8 days of multiplication, you actually only get 7.

Although your code is working, it's not giving you
the correct answer. Most of the time in these kinds
of problems, days means elapsed days. That means for
100 organisms @ 25% growth/day, there will be 125
after 1 elapsed day. But that "if (p>1):" means you
show 100 at day 1, which is wrong. You have 100 after
0 elapsed days (or day 0).


> Here's the updated code.
>
> :)
>
> import math
>
> def main():
>     #Declare and initialize variables
>     #starting number of organisms
>     organisms = 0
>     #average daily population increase as %
>     increase = 0.0
>     #number of days they will multiply
>     days = 0
>     #population prediction
>     population = 0.0
>
>     #Intro
>     print "*********************************************"
>     print  "WELCOME TO THE POPULATION GROWTH CALCULATOR"
>     print "*********************************************"
>
>     print "This program will predict the size of a population of organisms."
>     print
>     print
>     while organisms <=1:
>         organisms=input("Please enter the starting number of organisms: ")
>         if organisms <=1:
>             print "Error. Population must be at least two."
>
>     while increase <=0:
>         increase=input("Please enter the average daily population
> increase as a percentage (20% = .20): ")
>         if increase <=0:
>             print "The percent of increase must be positive."
>
>     while days <=0:
>         days=input("Please enter the number of days that they will
> multiply: ")
>         if days <=0:
>             print "The number of days must be positive."
>
>     print "         Day                                    Population"
>     print "----------------------------------------------------------"
>     population = organisms
>
>     for p in range (1,days+1):
>         if(  p > 1 ):
>             population = population + ( population * increase )
>
>         print "\t",p,
>
>
>
> mensana... at aol.com wrote:
> > 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- Hide quoted text -
>
> - Show quoted text -





More information about the Python-list mailing list