1

私のコードは、balance=3926 を除いて正しい結果を出しています。最低支払額: 370 ですが、360 である必要があります。プログラムは、指定された年利に対する最低月額支払額を出力する必要があります。最初の残高が与えられると、コードは年末の残高を計算する必要があります。毎月 10 ドルの支払いで初期残高を試しています。年末に残高が残っている場合は、残高を最初の残高にリセットし、支払いを 10 ドル増やし、(同じコードを使用して) 年末の残高を計算するコードを記述します。この新しい支払額が十分に大きいかどうかを確認するための年

annualInterestRate = 0.2

balance = 3926

monthlyinterestrate = annualInterestRate/12.0

remainingBalance = balance

month = 1
total = 0

payment = 10

def CheckMinimumPayment(payment,balance):

    "Checking if payment is in correct balance"
    while(payment*12 < balance):

        payment += 10
    return payment

payment = CheckMinimumPayment(payment,balance)

while(month <= 12):
    remainingBalance = remainingBalance - payment + (annualInterestRate / 12.0) * (remainingBalance - payment)
    month += 1
    total += payment


payment = CheckMinimumPayment(payment,total+remainingBalance)

print("Lowest Payment: " + str(payment))
4

1 に答える 1

0

while(month <= 12)問題は、新しい支払いを試みるたびに、利息ループ ( として持っているもの) を繰り返していないことです。そのループを関数に記述し、新しい支払いを試みるたびに呼び出します。毎月の支払い額が多ければ多いほど、毎月追加される利息が少なくなるため、未払いの合計額は支払い額によって異なります。これが私が使用したものです:

annualInterestRate = 0.2
init_balance = 3926

monthlyInterestRate = annualInterestRate/12.0
init_payment = 10

def owedBalance(payment,balance):
    """ Calculate total owed balance after one year
        given an initial balance and montly payment"""

    for month in range(12):
        balance = (balance - payment) * (monthlyInterestRate + 1)

    return payment*12 + balance

def CheckMinimumPayment(payment,balance):
    "Checking if payment is in correct balance"

    while (payment*12 < owedBalance(payment, balance)):
        payment += 10

    return payment

min_payment = CheckMinimumPayment(init_payment,init_balance)

print("Lowest Payment: {}".format(min_payment))
于 2013-02-25T16:55:53.640 に答える