2015-01-20 47 views
0

我開始學習編碼並以Python開始。在我的Python當然,我有一個問題是這樣的:在Python中的每次迭代之後添加for循環的結果

寫一個程序,一年後計算的信用卡餘額,如果 一個人只需要支付通過每個月的信用卡 卡公司所要求的最低月付。如下所述

下列變量包含的值:

平衡 - 在信用卡上的餘額

annualInterestRate - 年利率爲小數

monthlyPaymentRate - 最低月度償付率作爲小數點

對於每個月,計算每月付款和餘額的報表,並打印以篩選格式如下:

月份:1
每月最低支付:96.0
餘額:4784.0

(我已經得到了部分正常的)

最後,打印出來的總金額支付的年,餘額餘額在年末的格式爲:

已支付總額:96.0 剩餘的balan CE:4784.0

(這是總的支付,我不能多小時的努力,尋找解決後的部分)所以在這裏

是什麼,我需要做的:加在一起的所有結果的最低月付款來獲得已支付的總額。

這裏是我的代碼:

def creditPayment(balance, annuelInterestRate, monthlyPaymentRate): 

    for month in range(1, 13): 

     monthlyInterestRate = annuelInterestRate/ 12.0 
     minimumMonthlyPayment = monthlyPaymentRate * balance 
     monthlyUnpaidBalance = balance - minimumMonthlyPayment 
     balance = monthlyUnpaidBalance + (monthlyInterestRate * monthlyUnpaidBalance) 

     totalPaid = sum((minimumMonthlyPayment) for _ in range(0, 13)) 

     print 'Month: ', month 
     print 'Minimum monthly payment: ', round(minimumMonthlyPayment, 2) 
     print 'Remaining balance: ', round(balance, 2) 
     print ' ' 
    print 'Total paid: ', round(totalPaid, 2) 
    print 'Remaining balance: ', round(balance, 2) 

print creditPayment(4213, 0.2, 0.04) 

一切工作正常,除了支付的總這就增加了12倍,僅minimumMonthlyPayment的第一個值。我無法做得更好。

回答

1

如果我已正確解釋您的問題,我假設您的意圖是每月增加totalPaidminimumMonthlyPayment。如果是這樣的:

totalPaid = 0.0 
for month in range(1, 13): 
    # 
    # Other stuff you're doing in the loop 
    # 
    totalPaid += minimumMonthlyPayment 

通過每一次循環中,totalPaid得到通過計算該特定月份的最低還款額增加。如果您打算添加支付最低付款以外的任何其他費用的情況,則必須更改/增加此邏輯。

+0

謝謝sooo它非常完美!我剛剛學到了一些新東西! – 2015-01-20 20:07:09

+0

@MaryseGauthier在這種情況下,真棒,歡迎來到SO。 :) – rchang 2015-01-20 20:11:22

0

在你的循環,你必須:

totalPaid = sum((minimumMonthlyPayment) for _ in range(0, 13)) 

這是設置totalPaid爲13倍minimumMonthlyPayment,因爲它是循環的該迭代,所以在最後的循環中的值設置爲上次最低付款的13倍。您需要在每次迭代中爲totalPaid添加一個值,以便在添加之前更新該值。以下是我會改變代碼:因爲你沒有使用你的for _ in range(0, 13)迭代器的實際值

def creditPayment(balance, annuelInterestRate, monthlyPaymentRate): 
    totalPaid = 0 
    for month in range(1, 13): 

     monthlyInterestRate = annuelInterestRate/ 12.0 
     minimumMonthlyPayment = monthlyPaymentRate * balance 
     monthlyUnpaidBalance = balance - minimumMonthlyPayment 
     balance = monthlyUnpaidBalance + (monthlyInterestRate * monthlyUnpaidBalance) 

     totalPaid +=minimumMonthlyPayment 

     print 'Month: ', month 
     print 'Minimum monthly payment: ', round(minimumMonthlyPayment, 2) 
     print 'Remaining balance: ', round(balance, 2) 
     print ' ' 
    print 'Total paid: ', round(totalPaid, 2) 
    print 'Remaining balance: ', round(balance, 2) 
    print creditPayment(4213, 0.2, 0.04) 
print creditPayment(4213, 0.2, 0.04) 

而且,這將是更具可讀性只使用range(13)。我懷疑你可能打算讓它循環12次,因爲你的程序的其餘部分是。

+0

感謝您的幫助!其實我把範圍(1,13)的原因是我需要打印月份:1到月份:12,因此月份在範圍內(1,13)似乎很好地工作,加上其餘的工作在功能。至少這是我的理解。再次感謝! – 2015-01-21 07:43:06

相關問題