編集: 以下は、受け取ったフィードバック/回答に基づいた作業コードです。
この質問は、MIT のオープン コースウェアを使用して Python/CS を学習しているときに出てきた、以前の質問に由来しています。--以前の質問はこちら--
次のコードを使用して、毎月の支払いなどのリストを作成しています。ただし、ループの最後に、月に支払われた合計金額の現在の合計を示す必要があります。
オリジナルコード
balance = float(raw_input("Outstanding Balance: "))
interestRate = float(raw_input("Interest Rate: "))
minPayRate = float(raw_input("Minimum Monthly Payment Rate: "))
for month in xrange(1, 12+1):
interestPaid = round(interestRate / 12.0 * balance, 2)
minPayment = round(minPayRate * balance, 2)
principalPaid = round(minPayment - interestPaid, 2)
remainingBalance = round(balance - principalPaid, 2)
print 'Month: %d' % (month,)
print 'Minimum monthly payment: %.2f' % (minPayment,)
print 'Principle paid: %.2f' % (principalPaid,)
print 'Remaining balance: %.2f' % (remainingBalance,)
balance = remainingBalance
if month in xrange(12, 12+1):
print 'RESULTS'
print 'Total amount paid: '
print 'Remaining balance: %.2f' % (remainingBalance,)
問題は、支払われた金額の現在の合計を維持する方法を理解できなかったことです. 追加してみましtotalPaid = round(interestPaid + principalPaid, 2)
たが、それは1か月の合計になりました。各月の値を維持し、最後にそれらをすべて合計して印刷することはできません。
また、結果の金額が1131.12になるはずであることも知っています
リストを介して各値がわかっているときにこれを行う多くの例を見つけましたが、それを正しく推定することはできません。
固定コード
balance = float(raw_input("Outstanding Balance: "))
interestRate = float(raw_input("Interest Rate: "))
minPayRate = float(raw_input("Minimum Monthly Payment Rate: "))
totalPaid = 0
for month in xrange(1, 12+1):
interestPaid = round(interestRate / 12.0 * balance, 2)
minPayment = round(minPayRate * balance, 2)
principalPaid = round(minPayment - interestPaid, 2)
remainingBalance = round(balance - principalPaid, 2)
totalPaid += round(minPayment, 2)
print 'Month: %d' % (month,)
print 'Minimum monthly payment: %.2f' % (minPayment,)
print 'Principle paid: %.2f' % (principalPaid,)
print 'Remaining balance: %.2f' % (remainingBalance,)
balance = remainingBalance
if month in xrange(12, 12+1):
print 'RESULTS'
print 'Total amount paid: %.2f' % (totalPaid,)
print 'Remaining balance: %.2f' % (remainingBalance,)