#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)