Python 3.5返回意外的答案
问题描述:
我在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和,这将有助于我不仅仅是一个修复:)
答
您在评论中写道更多:
的公式计算固定款项还清平衡兼顾兴趣和如果余额未付清,则每次循环增加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
在Python缩进是语法的一部分。请验证提供的代码片段是否具有适当的缩进块。如果cb> 0以下的行:特别感到可疑。 –
如果您使用的名称具有明显的含义,它可以帮助其他人了解您的代码数量巨大*。我猜这是一种复利计算器,但很多变量对我来说都是不透明的,所以我不知道你为什么要进行计算。 – Blckknght
您的if语句的缩进已关闭。至少下一行应该缩进一层。 –