Поиск числа с помощью другой функции

#python

#python

Вопрос:

У меня есть функция, которая получает аргумент для денег, второй — для процентов (например, когда вы кладете деньги в банк), а третий — на количество лет, на которое вы хотите внести свои деньги. Функция вернет деньги, которые вы получите в конце. Это функция:

 def value(money,interest,years):
    return money * (1   interest) ** years
 

Я хочу создать вторую функцию, которая получает два первых аргумента, а затем запрашивает у вас деньги, которые вы хотите получить в конце. Учитывая, что он вернет количество лет, необходимое для этого. Это то, что я получил до сих пор, но это не работает, потому что входные данные, которые я получаю, имеют более двух десятичных знаков, и мне нужен метод, в котором годы могут быть максимально точными, вместо того, чтобы мне увеличивать годы на 0,01. Любая помощь?

 def find(money,interest):
    wish = eval(input("How much money do you wish to get?: "))
    stonks = wish / money
    years = 0
    while wish >= value(money,interest,years):
        years  = 0.01
    return years
 

Я приведу пример результатов, которые мне были даны:

 find(100,0.03)
How much money do you wish to get?: 200
24
 

Комментарии:

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

2. Для этого есть математическое решение, как указал @Prune, но если вы хотите решить его численно , есть много методов. Для простого я бы начал с деления пополам, которое не имеет риска расхождения.

3. Используется float для преобразования строки в число, а не eval .

Ответ №1:

Для этого вам нужен логарифм:

 def find(money,interest):
    wish = eval(input("How much money do you wish to get?: "))
    stonks = wish / money
    
    return math.log(stonks, 1 interest)