没有得到正确的输出…logi

2024-10-03 02:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码给出了正确的结果,除了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))

Tags: 代码程序defpayment余额重置totalbalance
1条回答
网友
1楼 · 发布于 2024-10-03 02:32:19

问题是,每次尝试新的支付时,您不会重复利息循环(您所拥有的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))

相关问题 更多 >