初学者Python代码问题:累加器循环

时间:2013-09-18 19:22:49

标签: python loops for-loop accumulator

我是初学程序员,我正在进行一项任务,要求我在财务操作中执行嵌套循环。我已经编写了大部分代码和数字(如兴趣等),但是当我尝试打印出给定年份的储蓄摘要时会出现问题。

import math

def main():

    #This will be hardcoded values for the years running, savings amount and annual interest             and calculate the monthly interest rate

    savingsAmount = 500
    annualInterest = 0.12
    yearsRunning = 2

    monthlyInterest = annualInterest / 12

    #This will state the accumulator variables for totals of investment balance (month), savings (YTD), and interest earned (YTD)

    totalInvestBal = 0
    totalSavings = 500
    totalInterest = 0

    #This will begin the accumulator loop process

    for i in range (1, yearsRunning + 1):
        print "Savings Schedule for Year", i,":"
        print "Month    Interest    Amount  Balance"
        for i in range (1, 13):
            totalInterest = monthlyInterest * totalInvestBal
            totalInvestBal = totalSavings + totalInterest + totalInvestBal
            totalSavings = totalSavings
            print i, round(totalInterest,2), round(totalSavings,2), round(totalInvestBal,2)         
        print 
        #i becomes 12 here so we need another answer.
        print "Savings summary for year", (need a new way of saying the year here),":"
        print "Total amount saved:", totalSavings
        print "Total interest earned:", totalInterest
        print "End of year balance:", totalInvestBal


main()

由于“i”循环索引变量更新为12,我可以将其作为年份。我从第1年开始工作,我需要从第1年起开始的储蓄总结。如何修复?

2 个答案:

答案 0 :(得分:1)

对于初学者,我在代码中添加了一些内容 - 它们表示为输出打印一个选项卡,以便输出更好地排列。

def main():

    #This will be hardcoded values for the years running, savings amount and annual interest             and calculate the monthly interest rate

    savingsAmount = 500
    annualInterest = 0.12
    yearsRunning = 2

    monthlyInterest = annualInterest / 12

    #This will state the accumulator variables for totals of investment balance (month), savings (YTD), and interest earned (YTD)

    totalInvestBal = 0
    totalSavings = 500
    totalInterest = 0

    #This will begin the accumulator loop process

    for i in range (1, yearsRunning + 1):
        print
        print "Savings Schedule for Year", i,":"
        print "Month \tInterest \tAmount \tBalance"
        for i in range (1, 13):
            totalInterest = monthlyInterest * totalInvestBal
            totalInvestBal = totalSavings + totalInterest + totalInvestBal
            totalSavings = totalSavings
            print i, "\t", round(totalInterest,2), "\t\t",  round(totalSavings,2), "\t", round(totalInvestBal,2)         
        print 
        #i becomes 12 here so we need another answer.
        print "Savings summary for year" #, (need a new way of saying the year here),":"
        print "Total amount saved:", totalSavings
        print "Total interest earned:", totalInterest
        print "End of year balance:", totalInvestBal


main()

由于这是一项任务,我会指出我看到的一些错误,让你尝试修复它们。如果你看一下输出:

Savings Schedule for Year 1 :
Month   Interest    Amount  Balance
1   0.0         500.0   500.0
2   5.0         500.0   1005.0
3   10.05       500.0   1515.05
4   15.15       500.0   2030.2
5   20.3        500.0   2550.5
6   25.51       500.0   3076.01
7   30.76       500.0   3606.77
8   36.07       500.0   4142.84
9   41.43       500.0   4684.26
10  46.84       500.0   5231.11
11  52.31       500.0   5783.42
12  57.83       500.0   6341.25

Savings summary for year
Total amount saved: 500
Total interest earned: 57.8341733327
End of year balance: 6341.2515066

您的余额不正确,请查看此行代码以获得解决方案:

totalInvestBal = totalSavings + totalInterest + totalInvestBal

对于您的问题,我解释它的方式是,您希望在第一年之后的一年的时间范围内获得单独的利息收益价值。所以我认为你想要的第二年的输出是(假设你修复年终余额):

Savings Schedule for Year 2 :
Month   Interest    Amount  Balance
1   63.41       500.0   6904.66
2   69.05       500.0   7473.71
3   74.74       500.0   8048.45
4   80.48       500.0   8628.93
5   86.29       500.0   9215.22
6   92.15       500.0   9807.37
7   98.07       500.0   10405.45
8   104.05      500.0   11009.5
9   110.1       500.0   11619.6
10  116.2       500.0   12235.79
11  122.36      500.0   12858.15
12  128.58      500.0   13486.73

Savings summary for year
Total amount saved: 500
Total interest earned: 70.74733
End of year balance: 13486.7324266

这是对的吗?

答案 1 :(得分:1)

只需将第二个循环变量形式i更改为其他任何内容(例如k):

for i in range (1, yearsRunning + 1):
    print
    print "Savings Schedule for Year", i,":"
    print "Month    Interest    Amount  Balance"
    for k in range (1, 13):
        totalInterest = monthlyInterest * totalInvestBal
        totalInvestBal = totalSavings + totalInterest + totalInvestBal
        totalSavings = totalSavings
        print k, round(totalInterest,2), round(totalSavings,2), round(totalInvestBal,2)         
    print 
    #IF WE KEEP ONLY i IT becomes 12 here so we need another -> VARIABLE!!!!! for example K!!.
    print "Savings summary for year %s:" %(i) #use this " words words %s words" %(variable name)
    print "Total amount saved:", totalSavings
    print "Total interest earned:", totalInterest
    print "End of year balance:", totalInvestBal