Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Suma de elementos de lista
#1
Ayuda, soy nuevo en python y estoy intentando realizar un ejercicio. Dentro de el mismo debo sumar los elementos de una lista hasta que superen el valor "70".

Es decir, si mi lista es [1, 5, 10, 11, 15, 16, 18, 21], sumaria 1+5+10+11+etc... hasta llegar a un numero mayor a 70, en este caso 76. Tambien debo imprimir la posicion.
Se me a ocurrido hacerlo de esta forma pero la verdad es que no logro solucionarlo.

Código:
numeros=[1, 5, 10, 11, 15, 16, 18, 21]
print(numeros)

num=0
num2=0
for number in range(len(numeros)):
    while num<70:
        num2+=1
        num+=numeros[number]
      
print(num2)
print(num)

num2 lo utilizaria para determinar la posicion, pero lo unico que logro es que se sume el 1, 70 veces. Ya intente programarlo de varias formas pero no llego a la solucion, esta fue la ultima que probe.

Saludos, muchas gracias!
Responder
#2
Hola, bienvenido.

Se puede hacer tanto con un for como con un while, pero no mezclando ambos. Siguiendo con tu bucle for, podrías agregar un condicional dentro de él para saber si se superó el número deseado:

  1. numeros=[1, 5, 10, 11, 15, 16, 18, 21]
  2. print(numeros)
  3.  
  4. num=0
  5. num2=0
  6. for number in range(len(numeros)):
  7. num2+=1
  8. num+=numeros[number]
  9. if num > 70:
  10. break
  11.  
  12. print(num2)
  13. print(num)


Una forma más pythonica podría ser:

  1. numeros = [1, 5, 10, 11, 15, 16, 18, 21]
  2. suma = 0
  3.  
  4. for i, numero in enumerate(numeros):
  5. suma += numero
  6. if suma > 70:
  7. break
  8.  
  9. print(suma)
  10. print(i) # Posición


Te dejo una explicación sobre enumerate(): https://micro.recursospython.com/recurso...erate.html.

Saludos
Responder
#3
(03-12-2021, 04:49 PM)Francisco escribió: Hola, bienvenido.

Se puede hacer tanto con un for como con un while, pero no mezclando ambos. Siguiendo con tu bucle for, podrías agregar un condicional dentro de él para saber si se superó el número deseado:

  1. numeros=[1, 5, 10, 11, 15, 16, 18, 21]
  2. print(numeros)
  3.  
  4. num=0
  5. num2=0
  6. for number in range(len(numeros)):
  7.     num2+=1
  8.     num+=numeros[number]
  9.     if num > 70:
  10.         break
  11.      
  12. print(num2)
  13. print(num)


Una forma más pythonica podría ser:

  1. numeros = [1, 5, 10, 11, 15, 16, 18, 21]
  2. suma = 0
  3.  
  4. for i, numero in enumerate(numeros):
  5.     suma += numero
  6.     if suma > 70:
  7.         break
  8.  
  9. print(suma)
  10. print(i)    # Posición


Te dejo una explicación sobre enumerate(): https://micro.recursospython.com/recurso...erate.html.

Saludos

Muchas graciass!! Me sirvio mucho, igual para simplificar termine resolviendolo asi:
Código:
suma=0
x=0
posicion=-1
while suma<70:
    suma=suma+lista1[x]
    x=x+1
    posicion+=1
la lista esta en otra parte del codigo. Gracias por la bienvenida! Saludos!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)