Редактировать: Ниже приведен мой рабочий код, основанный на отзывах/ответах, которые я получил.
Этот вопрос проистекает из моего предыдущего вопроса, который возник во время изучения Python/CS с использованием открытого программного обеспечения MIT. --См. мой предыдущий вопрос здесь < /а>--
Я использую следующий код, чтобы составить список месячных платежей и прочего. Однако в конце цикла мне нужно указать промежуточную сумму общей суммы, выплаченной за месяцы.
Исходный код
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)
, но это привело только к сумме за один месяц, я не могу заставить его сохранять это значение для каждого месяца, а затем добавлять их все в конце для распечатки.
Также я знаю, что результирующая сумма должна быть 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,)
totalPaid
? Почему вы устанавливаете его на новое значение? Почему бы не включитьtotalPaid
в выражение? - person S.Lott   schedule 15.02.2011