为什么我要用这个简单的Python代码进入无限循环?
当balance为3329时,它返回310的好结果,但当4773进入无限循环而不是440的结果时…在while循环的每次迭代中,balance增加,因此它保持大于0。您可以打印余额的中间值:为什么我要用这个简单的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 = 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的增加量大于增量