For what its worth - here is my revision of your program. I did not send it earlier because I kept finding things that led me to want to see and verify the fundamental algorithm. But now I think my observations could also be useful.

My changes:
 Changed indentation from 8 to 2. For me this is much more readable
  and helps when there are several levels of indentation.
  Others prefer 4
 Removed all blank lines
 Removed unnecessary if statements and started with count == 2
 Changed sign of tuition (makes it a LOT easier to follow arithmetic)
Calcuate balance then use in print statement avoiding duplicate calculation
 Removed unnecessary ()
 Used *= where appropriate
 Used multiple assignment where appropriate
 Changed tuitionInc to 1.041 thus simplifying calculation of new tuition
 interest is misleading - it is the interest!

Questions:
 Why calculate tuition increase twice?
 Next has no explanatory text - what is it for?
   print newBalance + interest
 I wonder about if newBalance < tuition:
   With the starting values you provided that case is never true
   If it were true,   principal = newBalance - tuition
should be under an else clause!
principal = balance = 500000 # Starting fund amount.
interestRate = .05 # Interest rate added to the principal annually.
tuition = 34986 # Starting tuition fee
tuitionInc = 1.041 # The annual increase applied to the tuition.
print principal, "Is the starting principal" # This is to show the starting balance.
print tuition, "Is the starting tuition."
balance = principal - tuition
print balance," the amount remaining after first tuition deduction.  "
interest = balance * interestRate # calculates the amount added to the fund
print interest, "  Interest added to fund for one year. "
newBalance = balance + interest
print newBalance, "is the new balance."
count = 2 # keeps me informed on the number of students benefitting from this grant.
while principal > tuition:
 tuition *= tuitionInc # calculates the rising cost of tuition.
 if newBalance < tuition:
   print newBalance + interest
   newBalance = principal
   print principal," is the new balance. "
   interest = principal * interestRate
   print interest," is the new interest on the principal. "
   balance = principal + interest
   print balance,"is the new principal. "
 tuition *= tuitionInc # calculates the rising cost of tuition.
 print tuition," is the new cost of tuition. "
 principal = newBalance - tuition
 print principal," is the new balance. "
 interest = principal * interestRate
 print interest," is the new interest on the principal. "
 balance = principal + interest
 print balance, "is the new principal. "
 count = count + 1
 if tuition > principal:
   print principal + interest, "was available for the last student."
if count > 10:
 print count, "Students used this grant."


--
Bob Gailer
Chapel Hill NC
919-636-4239
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to