2016-09-27 68 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