На каждой итерации цикла в то время, баланс увеличивается , поэтому он сохраняет больше 0. вы можете распечатать промежуточные значения баланса:
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
Выход:
4773
5686.32508646
6666.19699272
7727.21549777
8887.18344195
10167.8094501
11595.5648257
13202.7284403
15028.6608622
17121.3580173
...
можете ли вы объяснить, как вам получило бы 440? С каким исчислением? Поэтому мы можем попытаться исправить ваш код. Похоже, что 3390
- это большее (целочисленное) начальное значение, которое можно установить на balance
, который сходится.
В вашем цикле, вы:
balance -= pay
balance = balance + (balance * (annualInterestRate/12.0))
что эквивалентно:
balance = balance - pay + ((balance - pay) * (annualInterestRate/12.0))
или:
balance = balance + balance * (annualInterestRate/12) - pay * (annualInterestRate/12)
Давайте упрощать, но положить pay2 = pay * (annualInterestRate/12)
. Так, в основном, balance
уменьшится, если pay2
больше, чем интерес balance * (annualInterestRate/12)
.
Чтобы лучше понять, что происходит, представьте, что это гонка между интересами и увеличением платы. Вначале интересы превышают зарплату, поэтому она продолжает расти, но в какой-то момент оплата может быть достаточно большой, чтобы уменьшить balance
, и на данный момент pay
всегда будет больше, чем интерес. Однако, если интересы начинаются на высоком уровне, проценты будут расти, и заработная плата никогда не достигнет суммы процентов (это на самом деле грустно). Математическая причина заключается в том, что заработная плата является линейной, тогда как интересы не растут и возрастают, поскольку balance
продолжает расти.
Я подозреваю, что вы не можете погасить кредит в $ 10, когда вы должны сделать $ 4773 в процентная ставка составляет 20%. Кредит продолжает расти, и заемщик гибнет. –
В какой-то момент ваш баланс поднимается на инф. Добавьте заявление печати до или после изменения баланса, чтобы увидеть его. – VooDooNOFX
Почему вы ожидаете результата '440'? – lurker