2016-04-03 151 views
-1

第一次海報和初學者在這裏。如果一個人每個月只支付信用卡公司要求的最低每月付款,我試圖運行一段時間來確定一年後的信用卡餘額。問題是,循環迭代相同的答案:While循環迭代相同的答案

bal = float(raw_input("Enter your outstanding balance: ")) 
ann = float(raw_input("Enter your annual interest rate: ")) 
min = float(raw_input("Enter the minimum monthly payment rate ")) 

month = 1 
#min_monthly_paym=nt = min * bal 
#interest paid = ann/12.0 * bal 
#principal paid = min_monthly_payment(MMP) -interest paid(IP) 
#remaining balance = bal - principal paid (PP) 

mmp = min * bal 
ip = ann/12.0 * bal 
pp = mmp - ip 
rb = bal - pp 

while month <= 12: 
    print "Month:", month 
    print "Minimum monthly payment:", mmp 
    print "Principle paid:", pp 
    print "Remaining balance:", rb 
    month = month + 1 

所以它會經過所有個月,但只打印出這些計算的初始值。在打印報表之後,我嘗試將mmp/ip/pp/rb設置爲彼此,但同樣的事情發生了。我想我需要創建另一個變量,但不知道是什麼。

+1

請修復您的縮進。 – timgeb

+5

另外,爲什麼你認爲在while循環之外計算的值永遠不會再更新? – timgeb

+0

你的價值**從來沒有更新'while',因此在所有的12個月,你仍然有相同的mmp,ip,pp,rb ** –

回答

4

你正在做的事情,如:

a = 1 
ten_times_a = a * 10 

for n in range(10): 
    print ten_times_a  # Output: 10, 10, 10, 10, ... 

在上面的例子中,ten_times_a在執行的即時計算

它沒有定義方程或更新規則ten_times_aas a changes。


您必須將重新計算for的體內。

for a in range(10): 
    ten_times_a = a * 10 
    print ten_times_a  # Output: 0, 10, 20, 30, 40, ... 
+0

因此,在這種情況下for循環更有意義因爲我實際上有一個範圍(12個月)?我最初以爲同樣的事情,但也許這可以用一個while循環來執行 – Pbculley

+0

@Pbculley'for'循環用於當你有一個要處理的事件列表或一個數字來計算。 'while'是因爲當你不知道你需要做多少次事情時,所以你必須要繼續檢查你是否完成了。 –

+0

我知道有不同的方法來解決這個問題。我想知道如果它只能通過一個while循環完成。 – Pbculley