for loop
Shawn Minisall
trekker182 at comcast.net
Wed Oct 24 18:30:39 EDT 2007
I agree, but if I want to get a A on the program, thats how my professor
wants the output.
:)
mensanator at aol.com wrote:
> 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