annual_salary = int(input("Your annual salary "))
semi_annual_raise = 0.07
r = 0.04
down_payment = 250000
epsilon = 100
low = 0
high = 10000
guess = (high + low)//2
best_saving_rate = (guess/10000)
months = 0
current_savings = 0
steps = 0
while abs(current_savings - down_payment) >= 100:
for i in range(36):
current_savings += best_saving_rate*(annual_salary/12) + (current_savings*r)/12
months +=1
if months%6 == 0:
annual_salary = annual_salary + semi_annual_raise*annual_salary
if current_savings < down_payment:
low = guess
else:
high = guess
steps += 1
guess = (high + low)//2
best_saving_rate = float(guess/10000)
print(steps)
print(best_saving_rate)
print(current_savings)
Supõe-se que esse código encontre a melhor taxa de economia para alguém que está tentando ter dinheiro suficiente para um pagamento de 250000 dólares em 36 meses. Eu uso a pesquisa de bissecção e acho que estou no caminho certo, mas não vai funcionar. Acho que o problema é que a variável economia atual não está reinicializando a cada iteração e não sei como fazer isso. POR FAVOR AJUDE.
Por que você espera que o current_savings
seja redefinido a 0
cada iteração? Você não faz isso no código, então o que faria com que isso acontecesse? Além disso, pela aparência do código, você também deve redefinir months
para 0
(embora pareça que a for
variável de índice de loop i
na verdade seja o mês).
Isso corrige os erros óbvios que eu pude ver:
while abs(current_savings - down_payment) >= 100:
current_savings = 0 # add this
for month in range(36): # Change this
current_savings += best_saving_rate * (annual_salary / 12) + (current_savings * r) / 12
# months += 1 <-- remove this
if months % 6 == 0:
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras