Ниже приведен фрагмент кода, который вычисляет баланс кредитной карты, но не работает, когда balance
имеет экстремальное значение (например, balance=9999999999
ниже). Он выдает код через бесконечный цикл. У меня есть пара теорий о том, как исправить этот недостаток, но не знаю, как двигаться вперед с ними. Вот мой код:Почему у меня есть бесконечный цикл в моем коде?
balance = 9999999999
annualInterestRate = 0.2
monthlyPayment = 0
monthlyInterestRate = annualInterestRate /12
newbalance = balance
month = 0
while newbalance > 0:
monthlyPayment += .1
newbalance = balance
for month in range(1,13):
newbalance -= monthlyPayment
newbalance += monthlyInterestRate * newbalance
month += 1
print("Lowest Payment:" + str(round(monthlyPayment,2)))
Моя теория состоит в том, что while newbalance > 0
вызывает бесконечный цикл, потому что NewBalance всегда больше 0.
Как я могу изменить этот while
цикл так, что он не вызывает мой код работает бесконечно?
К слову: С умеренными цифрами программа длится долго и, наконец, дает ответ. Для больших чисел программа продолжает работать.
Почему вы не добавляете 'print (newbalance)' в свой 'while' цикл вместо того, чтобы гадать, что это за значение? – CoryKramer
Вы напечатали значения? это очень помогло бы! –
@MooingRawr: Я думаю, что это преднамеренно; программа, по-видимому, рассчитывает минимальный ежемесячный платеж для полного баланса в течение 12 месяцев, не увеличивая ежемесячный платеж каждый год. (Если это увеличивало ежемесячный платеж каждый год, вы никогда не заплатите его таким образом.) – user2357112