Python中的加减序列

Python中的加减序列,python,sequence,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

我正在创建一个程序,该程序可以对序列中的值求和,但它有交替的加号/减号


我想把这个序列的和变成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)

您可以将
-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
作为变量名,因为上面使用的I已经使用了该名称。)

获取输入:

n = input("Input how many numbers you want to add")
之后,您可以初始化总和:(您可能需要进行一些测试,以确保
n
int

然后是循环。你可以用一些数学来检查你是否应该加减:

for i in range(3, 3+2*n, 2):
    if ((i-3)/2)%2 == 1:
        total -= (1/i)
    else:
        total += (1/i)
或者使用arshajii的小把戏(相当聪明):

另一个版本

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

print(f(4))
0.7238095238095239

可以应用于更广泛的应用程序的一种方法是使用
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) 

你的问题是什么?我怎么能像前面的例子一样使用加号和减号呢?不要用
sum
作为变量名。我假设你在学习python,python 3会是一个更好的起点。
s
实际上可能是一个整数。使用
print
语句意味着OP正在使用Python 2。@DSM在Python 2中,
input()
函数进行自动转换??在上面的代码中,OP不会转换为
int
@RSerrao是的,它会转换(假设输入了有效的int)。
-1**i
-(1**i)
,它始终等于-1。您需要将
-1
放在括号中。
def f(n): 
    return sum(pow(-1,x)/(2*x +1) for x in range(n))

print(f(4))
0.7238095238095239
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)