Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我要用这个简单的Python代码进入无限循环?_Python_Loops_Infinite - Fatal编程技术网

为什么我要用这个简单的Python代码进入无限循环?

为什么我要用这个简单的Python代码进入无限循环?,python,loops,infinite,Python,Loops,Infinite,当balance为3329时,它返回310的好结果,但当4773进入无限循环而不是440的结果时…在while循环的每次迭代中,balance增加,因此它保持大于0。您可以打印余额的中间值: balance = 4773 annualInterestRate = 0.2 pay = 10 while balance > 0: for key in range(1,13): balance -= pay balance = balance + (b

当balance为3329时,它返回310的好结果,但当4773进入无限循环而不是440的结果时…

在while循环的每次迭代中,balance增加,因此它保持大于0。您可以打印余额的中间值:

balance = 4773
annualInterestRate = 0.2

pay = 10

while balance > 0:
    for key in range(1,13):
        balance -= pay
        balance = balance + (balance * (annualInterestRate / 12.0))
    pay += 10

print('Lowest Payment: '+str(pay))
输出:

balance = 4773
annualInterestRate = 0.2

pay = 10

while balance > 0:
    print balance
    for key in range(1,13):
        balance -= pay
        balance = balance + (balance * (annualInterestRate / 12.0))
    pay += 10
你能解释一下你是如何得到440英镑的吗?用哪种微积分?所以我们可以尝试修复你的代码。看起来
3390
是可以设置为收敛的
balance
的较大(整数)初始值

在循环中,您执行以下操作:

4773
5686.32508646
6666.19699272
7727.21549777
8887.18344195
10167.8094501
11595.5648257
13202.7284403
15028.6608622
17121.3580173
...
这相当于:

balance -= pay
balance = balance + (balance * (annualInterestRate / 12.0))
或:

让我们简化一下,但把
pay2=pay*(annualInterestate/12)
放在下面。因此,基本上,如果
支付2
大于利息
余额*(年度利率/12)
,则
余额将减少


为了更好地理解发生了什么,想象一下这是一场利益和工资增长之间的竞赛。利息在开始时高于工资,因此它会不断增加,但在某些时候,工资可能会大到足以减少
余额
,此时,
工资
将始终高于利息。然而,如果利息开始在一个高水平,利息将增长,工资将永远不会达到利息的数额(这实际上是可悲的)。数学上的原因是,薪酬是线性的,而利息不是线性的,并且随着
余额的持续增长而不断增加。

在while循环的每次迭代中,余额都会增加,因此它保持大于0。您可以打印余额的中间值:

balance = 4773
annualInterestRate = 0.2

pay = 10

while balance > 0:
    for key in range(1,13):
        balance -= pay
        balance = balance + (balance * (annualInterestRate / 12.0))
    pay += 10

print('Lowest Payment: '+str(pay))
输出:

balance = 4773
annualInterestRate = 0.2

pay = 10

while balance > 0:
    print balance
    for key in range(1,13):
        balance -= pay
        balance = balance + (balance * (annualInterestRate / 12.0))
    pay += 10
你能解释一下你是如何得到440英镑的吗?用哪种微积分?所以我们可以尝试修复你的代码。看起来
3390
是可以设置为收敛的
balance
的较大(整数)初始值

在循环中,您执行以下操作:

4773
5686.32508646
6666.19699272
7727.21549777
8887.18344195
10167.8094501
11595.5648257
13202.7284403
15028.6608622
17121.3580173
...
这相当于:

balance -= pay
balance = balance + (balance * (annualInterestRate / 12.0))
或:

让我们简化一下,但把
pay2=pay*(annualInterestate/12)
放在下面。因此,基本上,如果
支付2
大于利息
余额*(年度利率/12)
,则
余额将减少


为了更好地理解发生了什么,想象一下这是一场利益和工资增长之间的竞赛。利息在开始时高于工资,因此它会不断增加,但在某些时候,工资可能会大到足以减少
余额
,此时,
工资
将始终高于利息。然而,如果利息开始在一个高水平,利息将增长,工资将永远不会达到利息的数额(这实际上是可悲的)。数学上的原因是,薪酬是线性的,而利息不是线性的,并且随着
余额的持续增长而不断增加。

在while循环的每次迭代中,余额都会增加,因此它保持大于0。您可以打印余额的中间值:

balance = 4773
annualInterestRate = 0.2

pay = 10

while balance > 0:
    for key in range(1,13):
        balance -= pay
        balance = balance + (balance * (annualInterestRate / 12.0))
    pay += 10

print('Lowest Payment: '+str(pay))
输出:

balance = 4773
annualInterestRate = 0.2

pay = 10

while balance > 0:
    print balance
    for key in range(1,13):
        balance -= pay
        balance = balance + (balance * (annualInterestRate / 12.0))
    pay += 10
你能解释一下你是如何得到440英镑的吗?用哪种微积分?所以我们可以尝试修复你的代码。看起来
3390
是可以设置为收敛的
balance
的较大(整数)初始值

在循环中,您执行以下操作:

4773
5686.32508646
6666.19699272
7727.21549777
8887.18344195
10167.8094501
11595.5648257
13202.7284403
15028.6608622
17121.3580173
...
这相当于:

balance -= pay
balance = balance + (balance * (annualInterestRate / 12.0))
或:

让我们简化一下,但把
pay2=pay*(annualInterestate/12)
放在下面。因此,基本上,如果
支付2
大于利息
余额*(年度利率/12)
,则
余额将减少


为了更好地理解发生了什么,想象一下这是一场利益和工资增长之间的竞赛。利息在开始时高于工资,因此它会不断增加,但在某些时候,工资可能会大到足以减少
余额
,此时,
工资
将始终高于利息。然而,如果利息开始在一个高水平,利息将增长,工资将永远不会达到利息的数额(这实际上是可悲的)。数学上的原因是,薪酬是线性的,而利息不是线性的,并且随着
余额的持续增长而不断增加。

在while循环的每次迭代中,余额都会增加,因此它保持大于0。您可以打印余额的中间值:

balance = 4773
annualInterestRate = 0.2

pay = 10

while balance > 0:
    for key in range(1,13):
        balance -= pay
        balance = balance + (balance * (annualInterestRate / 12.0))
    pay += 10

print('Lowest Payment: '+str(pay))
输出:

balance = 4773
annualInterestRate = 0.2

pay = 10

while balance > 0:
    print balance
    for key in range(1,13):
        balance -= pay
        balance = balance + (balance * (annualInterestRate / 12.0))
    pay += 10
你能解释一下你是如何得到440英镑的吗?用哪种微积分?所以我们可以尝试修复你的代码。看起来
3390
是可以设置为收敛的
balance
的较大(整数)初始值

在循环中,您执行以下操作:

4773
5686.32508646
6666.19699272
7727.21549777
8887.18344195
10167.8094501
11595.5648257
13202.7284403
15028.6608622
17121.3580173
...
这相当于:

balance -= pay
balance = balance + (balance * (annualInterestRate / 12.0))
或:

让我们简化一下,但把
pay2=pay*(annualInterestate/12)
放在下面。因此,基本上,如果
支付2
大于利息
余额*(年度利率/12)
,则
余额将减少


为了更好地理解发生了什么,想象一下这是一场利益和工资增长之间的竞赛。利息在开始时高于工资,因此它会不断增加,但在某些时候,工资可能会大到足以减少
余额
,此时,
工资
将始终高于利息。然而,如果利息开始在一个高水平,利息将增长,工资将永远不会达到利息的数额(这实际上是可悲的)。数学上的原因是工资是线性的,而利息不是线性的,并且随着
余额的持续增长,利息会越来越多。

代码没有问题。根据您的公式,余额4773的增加大于付款的增加,即
10
。这就解释了为什么平衡一直增长到无穷大,因此循环永远不会结束

balance = balance + balance * (annualInterestRate/12) - pay * (annualInterestRate/12)

我想你可能想降低利息,或者提高工资,这样你就可以还债了:)

代码没问题。根据您的公式,余额4773的增加量大于增量