Python Инвестиционный калькулятор - PullRequest
0 голосов
/ 26 сентября 2018

Пожалуйста, мне нужна помощь, чтобы выяснить это.Я не знаю, где я ухожу.Назначение: «Напишите вложение функции (PMT, n, i), которое вычисляет сбережения вашего клиента в какой-то момент в будущем, если:

  • сумма инвестируется в КОНЦЕкаждый год, начиная с суммы PMT на конец этого года,

  • с процентной ставкой i% в год, составляется ежегодно,

  • сумма инвестиций удваивается каждый второй год (в совокупности). "

И вот мой код:

def investment(PMT, n, i):
    x = 0

    while x < n:
        if x % 2 == 1:
            PMT = 2*(PMT*(1 + i)**n)
        else:
            PMT = PMT*(1 + i)**n

        x = x + 1

    investment_balance = PMT

    return round(investment_balance, 2)

Ответ должен быть: investment(15000, 30, 0.1045) == 1954935238.47но я получаю: 3.4728768295747016e + 47.

Ответы [ 2 ]

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

Формула, которую вы используете, похожа на формулу, которую вы использовали бы для расчета будущей стоимости денег с сложным процентом.Это на правильном пути, но вы не хотите делать это вычисление в цикле.Ваши результаты будут слишком большими.

Попробуйте вместо этого.

  • Установите начальный инвестиционный баланс на 0.
  • Начните цикл в течение x лет.
  • Если год нечетный (потому что мы начинаем считать с 0), удвойте платеж.
  • Примените проценты к балансу.
  • Добавьте платеж к балансу.

Важно сделать этот последний шаг последний , потому что мы только добавляем платеж в конец каждого года.Это означает, что проценты не должны применяться в год 0. (Точнее, он будет применяться к балансу 0).

Если вы все это сделаете, вы получите функцию, которая выглядит следующим образом:

def investment(PMT, n, i):
    x = 0
    investment_balance = 0

    while x < n:
        if x % 2 == 1:
            PMT = 2* PMT
        investment_balance *= (1 + i)
        investment_balance += PMT
        x = x + 1

    return round(investment_balance, 2)

Это работает для примера ввода, который вы дали.

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

Пара замечаний:

Поскольку платеж производится в конце года, а проценты составляют i% в год, в конце первого года проценты не должны начисляться.

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

Ваше уравнение перезаписывает PMT в каждом цикле.PMT не увеличивается с процентами, только удваивается каждый второй год.Если PMT составлял 100 долларов в год 0, он должен составлять только 200 долларов в год 2, вместо того, чтобы быть сложным трижды вашим циклом.

...