Python中的加号和减号序列

时间:2014-08-03 22:05:49

标签: python sequence

即时创建一个程序,该程序对序列中的值求和,但它具有交替加/减。

我想使这个序列的总和为1-(1/3)+(1/5) - (1/7)....我如何使用替代加号和减号,就像前面的例子一样?

这是我到目前为止所做的代码:

s=input("Ingrese el numero de terminos a sumar:", )

sum=1.0
num=1.0

for i in xrange(1,s+1):
    ident=sum/(i+(i+1.0))
    sum=sum+-ident    

print "La suma de los",s,"terminos es %.2f"%(sum)

4 个答案:

答案 0 :(得分:3)

您可以将-1提升到与您所关注的任何词语的索引相对应的权力:

>>> (-1)**0
1
>>> (-1)**1
-1
>>> (-1)**2
1
>>> (-1)**3
-1
>>> (-1)**4
1

因此,整个总和可以简化为

result = sum((-1)**i * 1.0/(2*i + 1) for i in xrange(s))

(您不应该使用sum作为变量名称,因为该名称已由我上面使用的built-in function sum使用。)

答案 1 :(得分:0)

接受输入:

n = input("Input how many numbers you want to add")

之后,您可以初始化总和:(您可能需要进行一些测试以确保nint ..)

total = 1

然后循环。您可以使用一些数学来检查是否应该添加或减去:

for i in range(3, 3+2*n, 2):
    if ((i-3)/2)%2 == 1:
        total -= (1/i)
    else:
        total += (1/i)

或使用arshajii的小(而且相当聪明)技巧:

for i in range(1, 1+n):
    num = 2*i + 1
    total += ((-1)**i)*(1/num)

答案 2 :(得分:0)

另一个版本......

def f(n): 
    return sum(pow(-1,x)/(2*x +1) for x in range(n))

print(f(4))
0.7238095238095239

答案 3 :(得分:0)

可以应用于更广泛的应用程序的方法可以是使用bool。只需使用其余变量对其进行初始化,并每次更改其值。

s=input("Ingrese el numero de terminos a sumar:", )

add = False
sum=1.0
num=1.0

for i in xrange(1,s+1):
    ident=sum/(i+(i+1.0))
    if add:
        sum += ident    
    else:
        sum -= ident
    add = !add

print "La suma de los",s,"terminos es %.2f"%(sum)