Python

Задачка по питону, Аннуитетный платёж

Print('Задача 10. Аннуитетный платёж')

# Кредит в сумме S млн руб.,
# выданный на n лет под i% годовых,
# подлежит погашению равными ежегодными выплатами в конце каждого года,
# включающими процентные платежи и сумму в погашение основного долга.
#
# Проценты начисляются в один раз в год.
# После выплаты третьего платежа
# достигнута договорённость между кредитором и заёмщиком
# о продлении срока погашения займа на n_2 лет
# и увеличении процентной ставки с момента конверсии до i_2%.
#
# Напишите программу,
# которая выводит план погашения оставшейся части долга.
#
# A = KS
#
# K = i(1 + i) ** n / (1 + i) ** n - 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
Abdulxamid Giyasov
Abdulxamid Giyasov
91 544
Лучший ответ
Yevgeniy Galchevskiy Лучший! Спасибо
Нечего не понял но очень интересно
Yevgeniy Galchevskiy Вот и я о том же)
Николай Николаевич Кузьминов Получилось решить? Я все пытаюсь но вывод нeсовпадает
Решили задачку?
summ = float(input('Введите сумму кредита: '))
year = int(input('На сколько лет выдан? '))
percent = float(input('Сколько процентов годовых? '))

def payment(summ, year, percent):
percent = percent / 100
k = (percent * (1 + percent) ** year) / ((1 + percent) ** year - 1)
a_payment = round(k * summ, 2)
return a_payment

def period_printout(summ, percent, a_payment, period):
for i in range(1, period + 1):
paid_percent = summ * percent / 100 #общая сумма процентов по кредиту на текущий месяц
paid_credit = a_payment - paid_percent #тело кредита
print('\nПериод', i)
print('\nОстаток долга на начало периода:', summ)
print('Выплачено процентов:', paid_percent)
print('Выплачено тела кредита:', paid_credit)
summ -= paid_credit
else:
print('\nОстаток долга:', summ)

return summ

a_payment = payment(summ, year, percent)
new_summ = period_printout(summ, percent, a_payment, 3)

new_year = int(input('\nНа сколько лет продляется договор? '))
new_percent = float(input('Увеличение ставки до: '))
new_year = new_year + year - 3

a_payment = payment(new_summ, new_year, new_percent)
new_summ = period_printout(new_summ, new_percent, a_payment, new_year)
Виталий Мынка Спасибо ) только у вас лишние (else:
print('\nОстаток долга:', summ))
Их удалить. расставить табуляции и все норм )
def annuitet(s, n, i):
prc = i / 100
k = (prc * (1 + prc) ** n) / ((1 + prc) ** n - 1)
a = k * s
return round(a, 2)

s = float(input('Введите сумму кредита: '))
n = int(input('На сколько лет выдан? '))
i = float(input('Сколько процентов годовых? '))

ann = annuitet(s, n, i)

for period in range(1, 4):
perc = s * i * 0.01
print()
print('Период:', period)
print('Остаток долга на начало периода:', s)
print('Выплачено процентов:', perc)
print('Выплачено тела кредита:', ann - perc)
s -= (ann - perc)
else:
print('\nОстаток долга:', s)
print('==================== ')

n_2 = int(input('На сколько лет продлевается договор? '))
i_2 = float(input('Увеличение ставки до: '))

new_s = s
new_n = n - 3 + n_2
new_i = i_2

new_ann = annuitet(new_s, new_n, new_i)

for new_period in range(1, new_n + 1):
perc = new_s * new_i * 0.01
print()
print('Период:', new_period)
print('Остаток долга на начало периода:', new_s)
print('Выплачено процентов:', perc)
print('Выплачено тела кредита:', new_ann - perc)
new_s -= (new_ann - perc)
else:
print('\nОстаток долга:', new_s)
print('==================== ')
R.p. Yadav
R.p. Yadav
189
def annuity_payment(summ_credit, credit_year, percent_credit):
percent_credit = percent_credit / 100
k = (percent_credit * (1 + percent_credit) ** credit_year) / ((1 + percent_credit) ** credit_year - 1)
annuity = round(k * summ_credit, 2)
return annuity

def period_credit(summ_credit, percent_credit, annuity, number_period):
for number_period in range(1, number_period + 1):
paid_percent = summ_credit * percent_credit / 100
paid_credit = annuity - paid_percent
print('\nПериод', number_period)
print('\nОстаток долга на начало периода:', summ_credit)
print('Выплачено процентов:', paid_percent)
print('Выплачено тела кредита:', paid_credit)
summ_credit -= paid_credit
print('\nОстаток долга:', summ_credit)
return summ_credit




summ_credit = float(input('Введите сумму кредита: '))
credit_year = int(input('На сколько лет выдан? '))
percent_credit = float(input('Сколько процентов годовых? '))
annuity_payment(summ_credit, credit_year, percent_credit)

annuity = annuity_payment(summ_credit, credit_year, percent_credit)
new_summ = period_credit(summ_credit, percent_credit, annuity, 3)
new_year = int(input('\nНа сколько лет продляется договор? '))
new_percent = float(input('Увеличение ставки до: '))
new_year = new_year + credit_year - 3

annuity = annuity_payment(new_summ, new_year, new_percent)
new_summ = period_credit(new_summ, new_percent, annuity, new_year)
def calc(years, credit, percent):
percent = percent / 100
A = round(credit * (percent * (1 + percent) ** years) / ((1 + percent) ** years - 1), 2)
n = 0
for t in range(1, years_for + 1):
print('\nПериод:', t)
print('Остаток долга на начало периода:', round(credit, n))
n += 2
perc_for_per = credit * percent
print('Выплачено процентов: ', perc_for_per)
body_credit = A - perc_for_per
print('Выплачено тела кредита: ', round(body_credit, n))
credit = credit - body_credit
print('\nОстаток долга:', credit)
return credit

credit = float(input('Введите сумму кредита: '))
years = int(input('На сколько лет выдан? '))
years_for =3
percent = int(input('Сколько процентов годовых? '))

new_credit = calc(years, credit, percent)

print('\n====================')

new_years = int(input('\nНа сколько лет продлевается договор? '))
years = years_for = 2 + new_years
percent = int(input('Увеличение ставки до: '))

calc(years, new_credit, percent)
Мickel Sauliak
Мickel Sauliak
129