2016-09-27 71 views
-1

我在python中得到了意想不到的结果。输出应该是440,但我得到370,所以我想我的循环中丢失了一些东西。Python 3.5返回意外的答案

的代码计算定额支付,如果余额没有还清10每个回路还清余额(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

在Python缩进是语法的一部分。请验证提供的代码片段是否具有适当的缩进块。如果cb> 0以下的行:特别感到可疑。 –

+0

如果您使用的名称具有明显的含义,它可以帮助其他人了解您的代码数量巨大*。我猜这是一种复利计算器,但很多变量对我来说都是不透明的,所以我不知道你为什么要进行计算。 – Blckknght

+0

您的if语句的缩进已关闭。至少下一行应该缩进一层。 –

回答

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 
+0

添加打印有很大帮助。我将重新开始,并让这一切顺利。我是python的新手,所以我现在有很多试验和错误! – answrseeker