2016-01-28 96 views
1
minimunpaymonth = 0 
balance = 4773 
annualInterestRate = 0.2 
def function(minimunpaymonth): 
    global balance 
    month = 1 
    while month <= 12: 
     balance = balance - minimunpaymonth 
     anninterest = annualInterestRate/12 * balance 
     balance = balance + anninterest 
     month += 1 
    return balance 
while function(minimunpaymonth) >= 0: 
    minimunpaymonth += 10 
print "Lowest Payment: " + str(minimunpaymonth) 

第二while循環是無限的,我不知道爲什麼。第一是確定的,因爲我已經跑了爲什麼我的代碼無限循環?

當環路增加minimunpaymonth,平衡的價值下降,這樣就會有一個時刻,當餘額爲負值

def function(minimunpaymonth, balance, annualInterestRate): 
    month = 1 
    while month <= 12: 
     balance = balance - minimunpaymonth 
     anninterest = annualInterestRate/12 * balance 
     balance = balance + anninterest 
     month += 1 
    return balance 
while function(minimunpaymonth, balance, annualInterestRate) >= 0: 
    minimunpaymonth += 10 
print "Lowest Payment: " + str(minimunpaymonth) 

好,我只是解決了這個問題。我改變函數給3個參數,而不是1

+0

提示:'minimunpaymonth'從0開始。它在循環中上升還是下降? –

+0

在'function'中加入'print'語句來檢查'balance'的值。然後檢查該值是否正確。 – unutbu

回答

0

第二個循環不斷添加到最小支付,它將始終> = 0,直到它達到變量的數值限制;然而,正如評論指出的那樣,「功能」可能會變得更少,但也許利率總是將餘額保持在零以上,並且最低的付款不會在那裏實現 - 在現實生活中足夠合理!

+1

如果我添加10到minimunpaymonth,新的餘額值將會小於舊的值 –

+0

也許利率始終保持餘額高於最低支付。這是可信的...;我編輯回答上述 – JosephDoggie

+1

我不這麼認爲,如果我只寫功能並手動增加minimunpaymonth的值,平衡值開始下降,直到它變成負值。 但循環增加了價值 –

1

您的第二個循環正在檢查以查看minimunpaymonth是否爲>= 0,如果是則它再次執行循環。

您的minimunpaymonth將始終爲>=0,因爲它始於0 &只能添加到。這個值沒有減法。