Python - Código que realice la suma de posiciones impares empezando por uno de una lista

 
Vista:

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por Óscar (7 intervenciones) el 20/08/2020 10:26:26
Buenos días, a continuación muestro el siguiente ejercicio de un curso de introducción a python que estoy realizando. También les muestro el código que he creado, convencido de que era correcta su elaboración, pero al introducir el resultado en el corrector del ejercicio, me dice que es erróneo. Espero que alguien me pueda colaborar. Gracias.

Enunciado:
Implementar un código de Python que realice la operación detallada más abajo sobre la lista entregada hasta encontrar un valor igual o superior al valor reseñado sin incluirlo

Operación: Suma de valores en posiciones impares empezando por 1 (por ejemplo con la lista [1,2,4,6,92,56] y el valor límite 90 sumaría 1+4)

Lista: [ 33, 42, 10, 13, 19, 82, 32, 14, 17, 29, 19, 24, 4, 79, 33, 13, 38, 6, 11, 70, 86, 70, 75, 90, 9, 50, 52, 90, 10, 81, 69, 23, 49, 87, 60, 24, 25, 15, 27, 81, 68, 19, 61, 23, 72, 25, 39, 14, 27, 47, 31, 4, 52, 48, 5, 79, 84, 29, 40, 36, 43, 2, 21, 51, 70, 66, 59, 82, 39, 28, 49, 13, 62, 87, 9, 45, 7, 7, 46, 29, 64, 11, 69, 72, 70, 35, 48, 32, 30, 53, 68, 33, 61, 12, 47, 51, 84, 32, 80, 69, 58, 76, 38, 21, 87, 30, 58, 59, 64, 40, 77, 53, 45, 83, 90, 20, 61, 32, 33, 13, 45, 51, 84, 48, 8, 49, 71, 32, 36, 78, 31, 77, 46, 30, 33, 18, 34, 77, 32, 35, 82, 73, 74, 81, 79, 95, 96, 93, 96, 99]

Valor límite: 91

Debo crear un código que me devuelva el valor de la suma.



El código que he elaborado es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
lista=[33,42,10,13,19,82,32,14,17,29,19,24,4,79,33,13,38,6,11,70,86,70,75,90,9,50,52,90,10,81,69,23,49,87,60,24,25,15,27,81,68,19,61,23,72,25,39,14,27,47,31,4,52,48,5,79,84,29,40,36,43,2,21,51,70,66,59,82,39,28,49,13,62,87,9,45,7,7,46,29,64,11,69,72,70,35,48,32,30,53,68,33,61,12,47,51,84,32,80,69,58,76,38,21,87,30,58,59,64,40,77,53,45,83,90,20,61,32,33,13,45,51,84,48,8,49,71,32,36,78,31,77,46,30,33,18,34,77,32,35,82,73,74,81,79,95,96,93,96,99]
i=0
a=0
numeros=0
resultado=0
total=0
for elemento in lista:
    if i%2==0:
        print(f'Este es el elemento de la posición impar a sumar: {elemento}')
        if elemento<91:
            resultado=resultado+int(elemento)
            print(f'El resultado obtenido con esta suma es: {resultado}')
        else:
            print(f'El número {elemento} no se suma al ser mayor o igual que 91')
            break
    i=i+1
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
Imágen de perfil de algoritmo
Val: 819
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por algoritmo (245 intervenciones) el 20/08/2020 13:19:58
Hola

He probado tu código y funciona.

¿Puedes indicar el mensaje de error que te ofrece?
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 110
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por JOSE JEREMIAS CABALLERO (26 intervenciones) el 20/08/2020 19:58:40
1
2
3
4
5
6
7
8
9
10
11
12
13
lista=[33,42,10,13,19,82,32,14,17,29,19,24,4,79,33,13,38,6,11,70,86,70,75,90,9,50,52,90,10,81,69,23,49,87,60,24,25,15,27,81,68,19,61,23,72,25,39,14,27,47,31,4,52,48,5,79,84,29,40,36,43,2,21,51,70,66,59,82,39,28,49,13,62,87,9,45,7,7,46,29,64,11,69,72,70,35,48,32,30,53,68,33,61,12,47,51,84,32,80,69,58,76,38,21,87,30,58,59,64,40,77,53,45,83,90,20,61,32,33,13,45,51,84,48,8,49,71,32,36,78,31,77,46,30,33,18,34,77,32,35,82,73,74,81,79,95,96,93,96,99]
i=0
valor_limite=91
resultado=0
for elemento in lista:
    if i%2==0:
        if elemento<valor_limite:
            resultado=resultado+elemento
        else:
            print(f'El número {elemento} no se suma al ser mayor o igual que {valor_limite}')
            break
    i=i+1
print(f'La suma obtenida es: {resultado}')

1
2
3
E:\PYTHON 2020>python sumaposicionimpar1.py
El número 96 no se suma al ser mayor o igual que 91
La suma obtenida es: 3449
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

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por Óscar (7 intervenciones) el 21/08/2020 14:01:54
Hola, muchas gracias por tus comentarios.

Efectivamente el código funciona, y además según las pruebas que hice (manual, con hoja exce comparando con el código elaborado) el resultado que obtendo es el mismo. El problema viene cuando introducir el resultado que he obtenido en el corrector del ejercicio que tiene el curso, me dice que es erróneo, sin especificar por qué. He planteado en el curso el problema (hace dos semanas), por si fuese un error de ellos, pero no he recibido respuesta, seguramente porque estamos en el mes de agosto.

Te agradezco tus comentarios.

Un saludo.
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

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por yoyyo (1 intervención) el 21/08/2020 16:09:26
hola:
el resultado está bien, ¿pero por qué tanto código?
te muestro otra forma:
1
2
3
4
5
6
7
8
9
10
#-*-coding:utf-8-*-
 
Lista=[33,42,10,13,19,82,32,14,17,29,19,24,4,79,33,13,38,6,11,70,86,70,75,90,9,50,52,90,10,81,69,23,49,87,60,24,25,15,27,81,68,19,61,23,72,25,39,14,27,47,31,4,52,48,5,79,84,29,40,36,43,2,21,51,70,66,59,82,39,28,49,13,62,87,9,45,7,7,46,29,64,11,69,72,70,35,48,32,30,53,68,33,61,12,47,51,84,32,80,69,58,76,38,21,87,30,58,59,64,40,77,53,45,83,90,20,61,32,33,13,45,51,84,48,8,49,71,32,36,78,31,77,46,30,33,18,34,77,32,35,82,73,74,81,79,95,96,93,96,99]
suma = 0
 
for x in range(0,len(Lista),2):
    if Lista[x] < 91:
        suma+= Lista[x]
 
print("la suma es: ",suma)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por Óscar (7 intervenciones) el 24/08/2020 16:41:44
Muchas gracias. Efectivamente tu forma reduce el código considerablemente. Apenas estoy empezando en este de la programación, espero ser más eficiente con el paso del tiempo. De nuevo, muchas gracias.
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

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por yoyyo (1 intervención) el 24/08/2020 18:51:54
hola:
no era por reducir el código, sino por mostrar otra forma de encarar un problema, si fuese por reducir el código simplemente hubiese hecho:
1
print("la suma es: ",sum([Lista[x] for x in range(0,len(Lista),2) if Lista[x] < 91 ]))

y listo!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por Óscar (7 intervenciones) el 24/08/2020 22:10:10
Muchas gracias de nuevo.Todos los códigos implementados me dan el mismo resultado (3449), y sin embargo al introducir el resultado en el corrector del ejercicio, me dice que es erróneo. Inicialmente pensé que erra un error en el corrector de ellos y me puse en contacto con los organizadores del curso planteándoles el problema (hace dos semanas), al no obtener respuesta, planteé el problema por este foro. Al ver que todos los códigos que se plantearon aquí obtenían el mismo resultado, me ratifiqué en la posibilidad que el error de ellos, pero aún así, me queda la duda de si no habré interpretado mal el enunciado. ¿Piensas que la interpretación del enunciado es correcta?

Muchas gracias por tu colaboración.

Un saludo.
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

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por yoyyo (1 intervención) el 25/08/2020 02:15:01
hola:
es que si es empezando por uno de la lista, claro que está mal, lo correcto seria:
1
print("la suma es: ",sum([Lista[x] for x in range(1,len(Lista),2) if Lista[x] < 91 ]))

ya que 1 en la lista en este caso sería:el 42, di por sentado que vos decías que el uno es el 33, sabiendo que en realidad no lo es, ya que en python sería 0
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

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por Óscar (7 intervenciones) el 25/08/2020 10:06:52
Buenos días, pero lo que no entiendo entonces es el ejemplo que ellos dan:
Operación: Suma de valores en posiciones impares empezando por 1 (por ejemplo con la lista [1,2,4,6,92,56] y el valor límite 90 sumaría 1+4)
Disculpa las molestias.
Un saludo.
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
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por joel (901 intervenciones) el 25/08/2020 16:27:23
los impares serian 1, 3, 5, 7, ... no?
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 110
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por JOSE JEREMIAS CABALLERO (26 intervenciones) el 25/08/2020 16:37:22
Podría publicar la imagen de la pregunta original y ademas la imagen del corrector donde muestra que es incorrecta la solución.
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

Código que realice la suma de posiciones impares empezando por uno de una lista

Publicado por Landa (1 intervención) el 17/12/2020 01:05:00
1
2
3
4
5
6
7
8
9
10
11
Lista =  [ 33, 42, 10, 13, 19, 82, 32, 14, 17, 29, 19, 24, 4, 79, 33, 13, 38, 6, 11, 70, 86, 70, 75, 90, 9, 50, 52, 90, 10, 81, 69, 23, 49, 87, 60, 24, 25, 15, 27, 81, 68, 19, 61, 23, 72, 25, 39, 14, 27, 47, 31, 4, 52, 48, 5, 79, 84, 29, 40, 36, 43, 2, 21, 51, 70, 66, 59, 82, 39, 28, 49, 13, 62, 87, 9, 45, 7, 7, 46, 29, 64, 11, 69, 72, 70, 35, 48, 32, 30, 53, 68, 33, 61, 12, 47, 51, 84, 32, 80, 69, 58, 76, 38, 21, 87, 30, 58, 59, 64, 40, 77, 53, 45, 83, 90, 20, 61, 32, 33, 13, 45, 51, 84, 48, 8, 49, 71, 32, 36, 78, 31, 77, 46, 30, 33, 18, 34, 77, 32, 35, 82, 73, 74, 81, 79, 95, 96, 93, 96, 99]
 
suma = 0
 
for x in range(0,len(Lista)):
 
    if Lista[x]%2 != 0 and Lista[x]<91:
        suma+= Lista[x]
        print(Lista[x])
 
print("la suma es: ",suma)



Tu suma es incorrecta, debes primero obtener los numeros impares y a la vez verificar que sean menores a este numero, en caso de querer buscar los pares cambias el !=0 por ==0, y el valor 91 por cualquier otro valor limite que deseas, hice el curso en Edx.
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