Python 2.7 为什么我的代码得到一个无限循环? minimunpaymount=0 余额=4773 年利率=0.2 def功能(最小未付款月): 全球平衡 月份=1 当月份=0时: 最低未付款月数+=10 打印“最低付款额:”+str(最低月付款额)

Python 2.7 为什么我的代码得到一个无限循环? minimunpaymount=0 余额=4773 年利率=0.2 def功能(最小未付款月): 全球平衡 月份=1 当月份=0时: 最低未付款月数+=10 打印“最低付款额:”+str(最低月付款额),python-2.7,Python 2.7,第二个while循环是无限的,我不知道为什么。第一个没问题,因为我已经运行过了 当循环增加minimunpaymonth时,余额的值下降,因此会出现余额为负的时刻 minimunpaymonth = 0 balance = 4773 annualInterestRate = 0.2 def function(minimunpaymonth): global balance month = 1 while month <= 12: balance =

第二个while循环是无限的,我不知道为什么。第一个没问题,因为我已经运行过了

当循环增加minimunpaymonth时,余额的值下降,因此会出现余额为负的时刻

minimunpaymonth = 0
balance = 4773
annualInterestRate = 0.2
def function(minimunpaymonth):
    global balance
    month = 1
    while month <= 12:
        balance = balance - minimunpaymonth
        anninterest = annualInterestRate/12 * balance
        balance = balance + anninterest
        month += 1
    return balance
while function(minimunpaymonth) >= 0:
    minimunpaymonth += 10
print "Lowest Payment: " + str(minimunpaymonth)
def函数(最小月付款、余额、年度利息):
月份=1
当月份=0时:
最低未付款月数+=10
打印“最低付款额:”+str(最低月付款额)

好的,我刚刚解决了。我将函数更改为提供3个参数,而不是1个

第二个循环不断添加到最小付款,它将始终>=0,直到它达到变量的数字限制;然而,正如评论所指出的,“函数”可能会变少,但也许利率总是保持余额在零以上,而最低支付额却没有达到这一点——这在现实生活中已经足够合理了

您的第二个循环正在检查
minimunpaymount
是否
>=0
,如果是,则再次执行循环


您的
minimunpaymount
将始终为
=0
,因为它从0开始&仅添加到。这个值没有减法

提示:
minimunpaymount
从0开始。在该循环中是向上还是向下?在
函数
中放入
打印
语句,以检查
余额
的值。然后检查该值是否正确。如果我在minimunpaymonth上加10,新的余额值将小于旧的值。也许利率总是使余额高于最低付款额。这是可信的。。。;我编辑了上面的答案我不这么认为,如果我只写函数并手动增加minimunpaymonth的值,余额值开始下降,直到变成负值。但是循环增加了bothI的值。我不是这门语言的专家,我会尝试做一个中间变量y=function(),然后检查y。。。。您可以暂时将控件更改为运行几次(例如一个for循环,运行十次并打印输出),然后看看会发生什么。。。。对我来说,while函数(minimunpaymonth)>=0:的语法一次做的太多了,如果它能工作就可以了,但如果它不能工作就显然不行。。。。
def function(minimunpaymonth, balance, annualInterestRate):
    month = 1
    while month <= 12:
        balance = balance - minimunpaymonth
        anninterest = annualInterestRate/12 * balance
        balance = balance + anninterest
        month += 1
    return balance
while function(minimunpaymonth, balance, annualInterestRate) >= 0:
    minimunpaymonth += 10
print "Lowest Payment: " + str(minimunpaymonth)