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:

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
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
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:

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!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)