Задача "Заем" (Python)

Тема: 
Линейные алгоритмы

Требуется убедиться, что брать кредиты не выгодно. Т. е. надо вычислить, сколько придется платить в месяц по займу и сколько всего отдать денег банку за весь период.

Месячная выплата по займу вычисляется по такой загадочной формуле:
m = (s * p * (1 + p)n) / (12 * ((1 + p)n – 1)).
Мы не будем разбирать ее смысл, т.к. все-равно не осилим.

Достаточно знать, что в этой формуле:
m - размер месячной выплаты;
s - сумма займа (кредита);
p - процент банка, выраженный в долях единицы (т. е. если 20%, то будет 0.2).
n - количество лет, на которые берется займ.

Код решения данной задачи на языке Python может выглядеть так:

amount = input("Сколько хотите взять денег: ")
amount = int(amount)
pct = input("Под какой процент вам их дают: ")
pct = int(pct)
years = input("Насколько лет берете: ")
years = float(years)
 
pct = pct / 100 
month_pay = (amount * pct * (1 + pct)**years) / (12 * ((1 + pct)**years - 1))
print("Ваш месячный платеж составит: %.2f" % month_pay)
summa = month_pay * years * 12
print("За весь период вы заплатите: %.2f" % summa)
print("Это составит %.2f%% от первоначальной суммы" % ((summa / amount) * 100))

Здесь следует обратить внимание на операции с различными типами данных. Значение years преобразутеся к вещественному типу, т.к. кредит можно взять не на целое количество лет. В выражении pct = pct / 100 получается дробное число (т.е. переменная pct теперь связана с вещественным типом данных).

Примерные результаты:

Сколько хотите взять денег: 1000000
Под какой процент вам их дают: 15
Насколько лет берете: 10
Ваш месячный платеж составит: 16604.34
За весь период вы заплатите: 1992520.63
Это составит 199.25% от первоначальной суммы

Сколько хотите взять денег: 2000000
Под какой процент вам их дают: 20
Насколько лет берете: 20
Ваш месячный платеж составит: 34226.09
За весь период вы заплатите: 8214261.23
Это составит 410.71% от первоначальной суммы

Сколько хотите взять денег: 35000
Под какой процент вам их дают: 10
Насколько лет берете: 0.5
Ваш месячный платеж составит: 6267.36
За весь период вы заплатите: 37604.15
Это составит 107.44% от первоначальной суммы

заем

как получить эту формулу
допустим вы взяли сумму А1 = A и отдаете каждый месяц процент годовой R, или месячный r = R/12

Тогда после первого месяца сумма будет А2 = (А )*(1+ r) - p
Тогда после второго месяца сумма будет А3 = A2*(1+ r) -p =
((А)*(1+ r) - p))(1+r) - p = (А )*(1+ r)^2 - p(1+r) - p
после n месяцев сумма которая останется будет
An = (А )*(1+ r)^n - p*(1+r)^(n-1)- p*(1+r)^(n-2)-...- p
условие что все выплатите An = 0 , Используя формулу геометрической прогрессии получаем упавнение связывающее все входящие величины

А*(1+ r)^n = p * ((1+r)^n -1)/r
отсюда для ежемесячного платежа получаем выражение

p = A*r*(1+r)^n/((1+r)^n -1)
только долг растет помесячно поэтому r -это месячный процент = годовому/12 а n число месяцев = числу лет * 12

Мне кажется, нельзя так

Мне кажется, нельзя так категорично ставить вопрос -- выгодно/*не выгодно брать кредит в банке. Выгодность кредита определяется не только тем количеством денег, которое нужно вернуть банку с учетом пользования кредитом. Чтобы быть докой в таких экономических вопросах, нужно просчитывать несколько шагов, а не один-два, как вы тут освещаете. Вы учите детей программированию (И это похвально! И я вам очень благодарен за это!). Но при этом Вы подспудно детям вкладываете в головы неправильно понимание строения мира. А это уже вред! И против этого вреда я сейчас выступаю!

Вот, смотрите, пример многоходовки. Допустим, я очень большой человек в правительстве. У меня есть зять. Он строитель. Он строит дома, школы, больницы. И я сижу одним местом на государственном бюджете, точнее я его распределяю. Можно просто поручить зятю построить по стране 1000 школ. Сначала это будет классно, но потом все увидят махинацию с госбюджетом. Значит, такое решение рисковано. То есть не пойдет.

Хорошо. Что будем делать? Очень хочется пропустить государственные деньги через своих людей, да и себе что-нибудь наварить. А давайте озаботимся повышением рождаемости в стране! Пообещаем выплату материнского капитала, например. Денег не дадим, но сделаем по другому. Люди погонятся за выгодой, наплодят детей, а детям нужны и детские сады, и школы, и больницы. Но самое главное, никто и не заподозрит нас в незаконной деятельности.

Вот это я понимаю -- экономика! Вот это высший пилотаж. Кредиты берутся не просто так, а ради извлечения прибыли. Если дело, которое вы задумали, не принесет прибыли, тогда брать кредит не имеет смысла. А если вы способны вывести на рынок нечто, что опрокинет его, но при этом вам не хватает финансов, то кредит будет выгоден. Деньги вы по любому потом отобьете, за все заплатит конечный потребитель, а вы -- как генератор экономического чуда, получите неплохую прибыль.

Отсутствие экономических знаний у человека -- это очень плохая характеристика. Давайте ж не будем вводить наших детей в заблуждения.

Если говорить о

Если говорить о потребительском кредитовании, которое сейчас навязывается обывателю, то оно прививает образ жизни не по средствам и фактически делает человека рабом. Людей надо приучать жить скромно, без понтов, не концентрировать на статусах и рангах, а давать понять, что знать, уметь, владеть профессией - это настоящие ценности личности, тогда и зла в мире будет меньше. Кредит под бизнес - это уже другая история. Это вопрос единичных личностей (обычно способных думать самостоятельно и объективно), а не масс, коим на данный момент навязывается культура потребительства, потому что кто-то на этом делает деньги.

Абсолютно с Вами

Абсолютно с Вами согласен!

Брать кредит нужно только в том случае, когда он действительно нужен.
К сожалению, население финансово неграмотно. Не будем сейчас заострять внимание на вопросе кому это выгодно. Это не та площадка, на которой следует говорить об экономике. Этот сайт ориентирован на освещение вопросов программирования. Поэтому топик про "невыгодность кредитов" получился скомканный: хотели научить детей программированию, а ушли совсем в другом направлении. К тому ушли крайне корявым путем.

А в остальном, всё так. Всё правильно делаете. Молодцы!