Аннуитетный платёж

bbIvaet

Новичок
Пользователь
Авг 14, 2021
1
0
1
Здравствуйте. У меня проблема с решением этой задачи. С первой частью у меня все нормально, но со вторым проблемы.
Нужно, чтобы код выводил данный текст:

Введите сумму кредита: 40e6
На сколько лет выдан? 5
Сколько процентов годовых? 6


Период: 1
Остаток долга на начало периода: 40000000.0
Выплачено процентов: 2400000.0
Выплачено тела кредита: 7095856.02

Период: 2
Остаток долга на начало периода: 32904143.98
Выплачено процентов: 1974248.6387999998
Выплачено тела кредита: 7521607.3812

Период: 3
Остаток долга на начало периода: 25382536.5988
Выплачено процентов: 1522952.195928
Выплачено тела кредита: 7972903.824072

Остаток долга: 17409632.774728

====================

На сколько лет продляется договор? 2
Увеличение ставки до: 10

Период: 1
Остаток долга на начало периода: 17409632.774728
Выплачено процентов: 1740963.2774728
Выплачено тела кредита: 3751267.5625271997

Период: 2
Остаток долга на начало периода: 13658365.2122008
Выплачено процентов: 1365836.52122008
Выплачено тела кредита: 4126394.3187799198

Период: 3
Остаток долга на начало периода: 9531970.89342088
Выплачено процентов: 953197.0893420881
Выплачено тела кредита: 4539033.750657911

Период: 4
Остаток долга на начало периода: 4992937.142762969
Выплачено процентов: 499293.71427629696
Выплачено тела кредита: 4992937.125723703

Остаток долга: 0.017039266414940357



Как нужно исправить программу, чтобы все выполнялось верно?
Код:
S = float(input('Введите сумму кредита: '))

n = int(input('На сколько лет выдан? '))

pr = int(input('Сколько процентов годовых? '))

pr /= 100

def an_pay(S1, pr1, n1):

  K = (pr1*(1 + pr1) ** n1)/((1 + pr1) ** n1 - 1)

  A = round(K * S1, 2)

  return A

anpay = an_pay(S, pr, n)

m = n - 2

def credit(s, m1, pr2, anpay1):

  per = 0

  for i in range(m1):

    per += 1

    print('Период:', per, '\nОстаток долга на начало периода:',

          s,

          '\nВыплачено процентов:', s * pr2,

          '\nВыплачено тела кредита:', anpay1 - s * pr2, '\n')

    s -= anpay1 - s * pr2

  print('Остаток долга:', s)

  

credit(S, m, pr, anpay)

n_1 = int(input('\n====================\n\nНа сколько лет продляется договор? '))

i_1 = int(input('Увеличение ставки до: '))

i_1 /= 100

m = n_1 * 2

credit(S, m, pr, anpay)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 590
460
83
у вас проблема в том, что вы используете старые данные во второй раз, верните из функции credit значение текущего долга и далее уже работайте с ним...
и имена переменных ужасны, я не понял что вы делаете в своем коде...
 

Форум IT Специалистов