Python 3.5返回意外答案

时间:2016-09-27 18:51:09

标签: python-3.x

我在python中遇到了意想不到的结果。输出应该是440,但我得到370,所以我想我的循环中缺少一些东西。

代码正在计算固定付款以支付余额(b),并考虑到利息(mir)和增加付款(mp),如果余额不是&已经还清了。

我目前的代码是

b = 4773
air = 0.2


mir = air/12.0
m = 1
mp = 10


while m in range(0,12):

    ub = b - mp
    b = ub + (mir * ub) 
    cb = b
    m += 1
    if cb> 0: 
       mp += 10
       m = 0

print(str(mp))

我不是在寻找这么多代码修复,而是解释我哪里出错了以及我应该怎样修复它。我可以看到代码正在运行并且循环正常我只是以一个意想不到的答案结束,所以我错过了一些东西。我正在尝试学习python,这对我的帮助不仅仅是修复:)

1 个答案:

答案 0 :(得分:0)

您在评论中写道:

  

公式是计算固定付款以支付余额,同时考虑到利息,如果余额没有还清,则每个循环增加10个付款。

我会做以下事情。 (我试图给你的变量描述名称。)

balance = 4773
annual_interest_rate = 0.2
monthly_interest_rate = annual_interest_rate / 12
number_of_payments = 0
payment = 10

while balance > 0:
    number_of_payments += 1
    balance -= payment
    balance += balance * monthly_interest_rate
    print(number_of_payments, payment, balance)
    payment += 10

输出:

1 10 4842.38333333
2 20 4902.75638889
3 30 4953.96899537
4 40 4995.86847863
5 50 5028.29961994
6 60 5051.1046136
7 70 5064.12302383
8 80 5067.19174089
9 90 5060.14493657
10 100 5042.81401885
11 110 5015.02758583
12 120 4976.61137893
13 130 4927.38823524
14 140 4867.17803917
15 150 4795.79767315
16 160 4713.0609677
17 170 4618.7786505
18 180 4512.75829467
19 190 4394.80426625
20 200 4264.71767069
21 210 4122.29629853
22 220 3967.33457018
23 230 3799.62347968
24 240 3618.95053767
25 250 3425.0997133
26 260 3217.85137519
27 270 2996.98223144
28 280 2762.26526863
29 290 2513.46968978
30 300 2250.36085127
31 310 1972.7001988
32 320 1680.24520211
33 330 1372.74928881
34 340 1049.96177696
35 350 711.627806573
36 360 357.488270016
37 370 -12.7202588168