当循环在范围内迭代且newBalance>0时,如何使newBalance变为==outstandingBalance

2024-04-24 21:39:43 发布

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

outstandingBalance = 1800   #declaring variables
apr = .18


interest = apr / 12         #annual interest rate
minpay = 0                #minpayment needed to payoff balance in a year
newBalance = outstandingBalance 
month = 0 #month counter

while newBalance>0:
    month = month+1             
    minpay = minpay + 10
    for i in range(1, 13):
        newBalance = newBalance * (1+interest) - minpay

        if newBalance < 0:
            break

所以我试图让newBalance返回到outstandingBalance值,当循环在范围内迭代时,newBalance仍然是>;0,这样我可以将每次迭代的minpay增加10,直到12个月newBalance<;0个


Tags: toinratevariablesaprmonthneededinterest
1条回答
网友
1楼 · 发布于 2024-04-24 21:39:43

据我所知,你正在试图确定最低每月付款额,以确保未偿余额在一年内付清,你正在接近这一点,将最低付款额增加10,直到余额在一年内付清。通过将newBalance = outstandingBalance行移动到循环中,可以启动并运行代码,以确保每次都从原始余额重新开始计算:

outstandingBalance = 1800
apr = 0.18
interest = 0.18 / 12
minpay = 0

while True:
    newBalance = outstandingBalance
    minpay += 10
    for i in range(12):
        newBalance = newBalance * (1.0 + interest) - minpay
    if newBalance <= 0:
        break

print "minpay needed:", minpay
# minpay needed: 170

要获得12个月内还清贷款所需的确切最低付款额,您可以使用类似牛顿法的寻零算法:

import scipy.optimize

outstandingBalance = 1800
apr = 0.18
interest = 0.18 / 12
minpay = 0

def balanceAfterYear(x, outstandingBalance, interest):
    newBalance = outstandingBalance
    for i in range(12):
        newBalance = newBalance * (1.0 + interest) - x
    return newBalance

print scipy.optimize.newton(balanceAfterYear, 0.0, args=(outstandingBalance, interest))
# 165.023987231

相关问题 更多 >