Hola compañeros del foro, soy yo de nuevo, esta ves me ha tocado hacer un problema bastante complicado, lo resolvi pero tengo dudas, para mi que funciona medio mal, me PODRIAN dar una mano?.. ahi les paso el programa que yo hice.
ACLARACION: la variable "amos" significa años, pero la puse asi porque python me tira error si la pongo asi.
PROGRAMA:
La formula (67) C0 = C · (1 + x/100)**n nos permite obtener el capital final que lograremos a partir de un capital inicial (C), una tasa de interes anual (x) en tanto por cien y un numero de años (n). Si lo que nos interesa conocer es el numero de años n que tardaremos en lograr un capital final C0 partiendo de un capital inicial C a una tasa de interes anual x, podemos despejar n en la formula del ejercicio 67 de la siguiente manera:
n = log(C0) − log(C) / log(1 + x/100)
Diseña un programa Python que obtenga el numero de años que se tarda en conseguir un capital final dado a partir de un capital inicial y una tasa de interes anual tambien dados. El programa debe tener en cuenta cuando se puede realizar el calculo y cuando no en funcion del valor de la tasa de interes (para evitar una division por cero, el calculo de logaritmos de valores negativos, etc). . . con una excepcion: si C y C0 son iguales, el numero de años es 0 independientemente de la tasa de interes (incluso de la que provocarıa un error de division por cero).
(Ejemplos: Para obtener 11 000 por una inversion de 10 000 al 5% anual es necesario esperar 1.9535 a˜nos. Obtener 11 000 por una inversion de 10 000 al 0% anual es imposible.
Para obtener 10 000 ¤ con una inversion de 10 000 no hay que esperar nada, sea cual sea el interes.)
ESTE ES EL PROBLEMA COMO LO PENSE YO:
from math import log
C = float(raw_input("Dame un capial inicial: "))
tasa = float(raw_input("Dame la tasa de interes anual: "))
if tasa <= 0:
print "No se puede realizar el calculo ya que la tasa es menor o igual a 0"
else:
if tasa > 0:
amos = (log((C*(1+tasa/100))) - log(C)) / (log(1+tasa/100))
CapitalFinal = (C * (1+tasa/100)**amos)
if CapitalFinal != 0:
print "Para obtener %3.2f por una inversion de %3.2f al %3.2f por ciento anual" % (CapitalFinal, C, tasa)
print "es necesario esperar %1.3f años" % (amos)
else:
amos = 0
me suena que algo tengo mal, pero no me doy cuenta que es... si me podrian ayudar a darme cuenta se los agradaceria mucho :)
Desde ya muchas gracias....