On Dec 27, 2007 7:17 PM, Marcelo Barbosa Araujo <[EMAIL PROTECTED]> wrote: > """ > Calculate compounding interest. > """ > i = float(interest_rate)/int(periods) > n = int(periods)*int(years) > return (((1 + i)**n)*float(principal)) > > Nesses casos é recomendado fazer TypeCast explícito (int, float, etc) > e a operação de potência é (**) > Basicamente, o erro que deu foi pela falta dos ints e floats.
Oi, Barbosa, embora seja boa a sua sugestão de ser explícito nas conversões, eu não gosto muito deste estilo. Um outro jeito, ainda seguindo a sua sugestão de ser explícito, ficaria assim: # garantir os tipos dos dados principal = float(principal) interest_rate = float(interest_rate) periods = int(periods) years = int(years) # fazer as contas i = interest_rate/periods n = periods*years return ((i+1)**n)*principal Eu prefiro assim porque as contas ficam mais fáceis de ler e em muitos casos a parte de "garantir os tipos dos dados" já está assegurada de outra maneira no programa. Agora, o erro que o Adenilton indicou era um erro de sintaxe, e realmente tinha vários problemas sintáticos no código que ele reproduziu (tipo uns parenteses voando). Adenilton, se você puder dizer exatamente de qual livro de Zope você tirou esse exemplo, talvez alguém que tenha o livro pode te ajudar a conferir o código. [ ]s Luciano