# mooc课程mit 6.00.1x--problem set2解决方法

• PAYING THE MINIMUM
计算每月信用卡最低还款额及剩余应还款额
 1 balance = 4842 #还款额
2 annualInterestRate = 0.2 #年利息比率
3 monthlyPaymentRate = 0.04 #每月最低还款比率
4 total = 0
5 #循环计算1-12月
6 for month in range(1, 13):
7     payment = monthlyPaymentRate * balance
8     total += payment
9     balance = (balance - payment) * (1 + annualInterestRate / 12.0)
10     print "Month:", month
11     #round(x,2)保留x两位小数
12     print "Minimum monthly payment:", round(payment, 2)
13     print "Remaining balance:", round(balance, 2)
14
15 print "Total paid:", round(total, 2)
16 print "Remaining balance:", round(balance, 2)

• PAYING DEBT OFF IN A YEAR
保持最低还款时查找一年最低的利息
 1 balance = 3926 #还款额
2 annualInterestRate = 0.2 #年利息率
3 payment = 0
4 b = 1
5
6 while b > 0:
7     payment += 10
8     b = balance
9
10     for month in range(1, 13):
11         b = (b - payment) * (1 + annualInterestRate / 12.0)
12
13 print "Lowest Payment:", payment

• USING BISECTION SEARCH TO MAKE THE PROGRAM FASTER
使用二分法优化上个问题的实现效率
 1 balance = 999999
2 annualInterestRate = 0.18
3
4 low = balance / 12.0
5 high = (balance * (1 + annualInterestRate / 12.0)**12) / 12.0
6
7 payment = (high + low) / 2.0
8 b = balance
9 for month in range(1, 13):
10     b = (b - payment) * (1 + annualInterestRate / 12.0)
11
12 while abs(b) > 0.01:
13     if b < 0:
14         high = payment
15     else:
16         low = payment
17
18     payment = (high + low) / 2.0
19     b = balance
20     for month in range(1, 13):
21         b = (b - payment) * (1 + annualInterestRate / 12.0)
22
23 print "Lowest Payment:", round(payment, 2)

posted @ 2015-06-27 22:12  honoka  阅读(...)  评论(...编辑  收藏