我是初学程序员,我正在进行一项任务,要求我在财务操作中执行嵌套循环。我已经编写了大部分代码和数字(如兴趣等),但是当我尝试打印出给定年份的储蓄摘要时会出现问题。
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年起开始的储蓄总结。如何修复?
答案 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