On Oct 22, 9:12?pm, Shawn Minisall <[EMAIL PROTECTED]> 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, > > > > [EMAIL PROTECTED] wrote: > > On Oct 22, 5:37 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > > >> On Oct 22, 5:22 pm, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> 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 - -- http://mail.python.org/mailman/listinfo/python-list