Python函数意外输出

时间:2018-07-21 15:02:06

标签: python function output

我有这个Python函数:

def main(n,x):
   g=0
   for i in range(1,n):
       g+=((-1)^i)*(x^(2*i+1))/(2*i+1)
   return g

print main(3,2)

,我认为应该是86/15时,输出是-6。我的错误在哪里?我想找到x-(x ^ 3)/ 3 +(x ^ 5)/ 5 + ...的n值...

2 个答案:

答案 0 :(得分:3)

您当前解决方案的一些问题:

  1. 您的乘幂运算符应为**而不是^,这是XOR。

  2. 您应从0而不是1开始range(然后第一个乘数为-1**0 = 1

  3. 将除法中的一个数字更改为浮点数,以避免Python 2中的整数除法。


def main(n, x):
   g = 0
   for i in range(n):
       g += ((-1)**i) * (x**(2*i+1))/float(2*i+1)
   return g

答案 1 :(得分:0)

如果您希望得到分数的答案,可以使用:

from fractions import Fraction
def main(n,x):
   g=0
   for i in range(n):
       g+=Fraction(((-1)**i)*(x**(2*i+1)),(2*i+1))
   return g

print main(3,2)

它给出输出:

86/15