Python - Necesito ayuda con una SERIE

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 18 puestos en Python (en relación al último mes)
Gráfica de Python

Necesito ayuda con una SERIE

Publicado por Maite (2 intervenciones) el 10/05/2020 03:35:31
Hola, qué tal? Estoy en un curso de Introducción a la Programación y ando teniendo problemas con una serie, la logre "resolver" pero no sé si esta del todo bien hecha. Espero alguien me pueda ayudar o darme una idea de como podría hacerlo de otra forma tal vez.

El ejercicio dice:

Escribir un programa que calcule la siguiente serie, teniendo en cuenta que n es un número entero introducido por teclado. Si n=5 la serie sería:

S= -2 + 3/2**2 - 4/2**4 + 5/2**6 - 6/2**8


(Solo se debe usar ciclo for o while, nada de definir funciones, listas, etc)


Yo lo hice así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#Primer exponente es 0 y va sumando 2
#Primer numerador empieza en 2 y va sumando 1
#Denominador siempre es 2
# Pares son negativos e impares son positivos
#Generalizado i/2**exp 
 
n=5
 
suma=0
exp=0           #exponente
 
for i in range(2,n+2):
    if (i%2==0):
        suma-=((i)/2**exp)
        exp+=2
    else:
        suma+=((i)/2**exp)
        exp+=2
print(suma)

El resultado final está bien porque tiene que dar un numero negativo, pero no me convence mucho el poner n+2. Ayuda pls, no es muy complicado el ejercicio pero me estoy matando la cabeza.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Necesito ayuda con una SERIE

Publicado por tincopasan (1082 intervenciones) el 10/05/2020 12:10:46
hola:
No es necesario que hagas dos post del mismo tema.
1
El resultado final está bien porque tiene que dar un numero negativo, pero no me convence mucho el poner n+2. Ayuda pls, no es muy complicado el ejercicio pero me estoy matando la cabeza.
si el resultado está bien ¿cuál es el problema en tu planteo? ¿te mata la cabeza que otro escriba de otra forma? No creo en esa perfección de código, salvo que quieras ser purista. y ni aún así.
te muestro otra forma para no usar n + 2 y tantos parentesís ya que estamos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
n = 5
suma = 0
exp = 0
x = 2
 
for i in range(n):
    if x%2==0:
        suma-=x/2**exp
        exp+=2
    else:
        suma+=x/2**exp
        exp+=2
    x+=1
 
print(suma)
tampoco quiere decir que sea la mejor.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar