Напишите функцию pay_off_period (PV, PMT, i), которая вычисляет минимальное количество лет, оставшихся до полного погашения кредита. - PullRequest
0 голосов
/ 29 сентября 2018

Напишите функцию pay_off_period (PV, PMT, i), которая вычисляет минимальное количество лет, оставшихся до полного погашения кредита, если:

  • сумма, принадлежащая кредиту, в настоящее время равнаPV
  • кредит погашен на сумму
  • PMT в КОНЦЕ каждого ГОДА (с первым платежом ровно через 1 год).

    def pay_off_period(PV, PMT, i):
    
        year = 1
        n = 1
    
        while PV > year:
            year = round((PMT * ((1 - (1+i) ** -(n)) / i)),2)
            n += 1
        return int(n)
    
    
    pay_off_period(1578934, 15000*12, 0.1045) == 25
    

Предполагается, что я получаю 25, но вместо этого я получаю 26. Куда я иду не так.

1 Ответ

0 голосов
/ 29 сентября 2018

Попробуйте следующее.Проверяйте значения немедленно и увеличивайте счетчик только при необходимости.

def pay_off_period(PV, PMT, i):
    year = 1
    n = 0
    while True:
        year = round((PMT * ((1 - (1+i) ** -(n)) / i)),2)
        if PV <= year:
            break
        n += 1
    return int(n)
...