Foros Python

Versión completa: Suma de elementos de lista
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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!
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:

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

num=0
num2=0
for number in range(len(numeros)):
    num2+=1
    num+=numeros[number]
    if num > 70:
        break
      
print(num2)
print(num)

Una forma más pythonica podría ser:

Código:
numeros = [1, 5, 10, 11, 15, 16, 18, 21]
suma = 0

for i, numero in enumerate(numeros):
    suma += numero
    if suma > 70:
        break

print(suma)
print(i)    # Posición

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

Saludos
(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:

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

num=0
num2=0
for number in range(len(numeros)):
    num2+=1
    num+=numeros[number]
    if num > 70:
        break
     
print(num2)
print(num)

Una forma más pythonica podría ser:

Código:
numeros = [1, 5, 10, 11, 15, 16, 18, 21]
suma = 0

for i, numero in enumerate(numeros):
    suma += numero
    if suma > 70:
        break

print(suma)
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!