0

我是一名初学者程序员,我正在处理一项要求我将嵌套循环作为财务操作的一部分的任务。我已经编写了大部分代码,并且数字根据(例如利息等)工作,但是当我尝试打印给定年份的储蓄摘要时出现了问题。

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,我可以将其作为年份。我从第一年开始工作,我也需要从第一年开始的储蓄摘要。那将如何解决?

4

2 回答 2

1

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

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

对于您的问题,我的解释是您希望在第一年之后的一年内获得单独的利息收入。所以我认为你想要的第 2 年的输出是(假设你修复了年终余额):

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

那是对的吗?

于 2013-09-18T19:37:03.950 回答
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
于 2013-09-18T19:42:13.160 回答