viernes, 3 de agosto de 2018

Series en Python

Reto: Series

Listar los números entre un valor inicial y uno final, con un cierto intervalo. Al final dar la suma de todos los valores listados.




Método 1

Establecemos tres valores concretos para las variables inicial, final e intervalo. Con el objeto de llegar a calcular la suma total creamos la variable total que inicializamos a cero. Nos metemos en un bucle for para recorrer con range todos los valores del rango usando el intervalo establecido. El objeto range nos permite recorrer un rango comenzando por el inicio, pero no llegando nunca al final exactamente. Observe que en la imagen no aparece listado el final que es 20.

La variable total actúa como acumulador sumando en cada vuelta del bucle el valor que tome la variable i en ese momento. Finalmente, y fuera del bucle imprimimos el valor de la variable total.



inicial=10
final=20
intervalo=2
total=0 #inicializamos la suma a cero
for i in range(inicial,final,intervalo):
  total+=i #la variable total actúa de acumulador
  print(i)
print('La suma es:',total)


Método 2

Generamos valores aleatorios para las variable inicial, final e intervalo. Imprimimos por pantalla los valores obtenidos. Creamos la variable i que luego usaremos en el bucle while y la inicializamos con el valor inicial. Creamos la lista L y la inicializamos como una lista vacía. La variable total inicialmente valdrá cero. Nos metemos en un bucle while que durará mientras la variable i sea menor que el valor final. Con append vamos añadiendo a la lista L los valores del intervalo dados por la variable i. Dentro del bucle while incrementamos el valor de la variable i con el importe del intervalo. Acumulamos los valores obtenidos en la variable total. Fuera del bucle imprimimos la lista L y mostramos el importe de la suma.



import random
random.seed() #barajamos la serie de números aleatorios
inicial=random.randint(100,130)
final=inicial+random.randint(10,20)
intervalo=random.randint(2,5)
print('inicial=',inicial)
print('final=',final)
print('intervalo=',intervalo)
i=inicial
L=[] #inicializamos L como una lista vacía
total=0 #inicializamos la suma a cero
while i<final:
  L.append(i) #añadimos el valor i a la lista L
  i+=intervalo #aumentamos el valor del contador
  total+=i
print(L) #imprimimos la lista
print('La suma es:',total)

Método 3

Un método muy sencillo y efectivo.
total=0
for x in range(1, 26):
  if x%5==0:
    total+=x  #acumulador
    print(x)
print("El total es: ",total)

4 comentarios:

  1. Queda un método más y es todavía más simple:

    total = 0

    for x in range(1, 26):
    ----if x % 5 == 0:
    --------total += x #acumulador
    --------print(x)
    print("El total es: ", total)

    De hecho se le pueden agregar números aleatorios con import random e incluso un input para que el usuario digite su propio rango con int(input("").

    Espero que haya sido de ayuda, gracias por enseñar y seguir haciendo contenido.

    ResponderEliminar
    Respuestas
    1. Hola SynthBass.
      Me ha encantado tu método, es super-elegante. Con tu permiso, lo incorporará al post.
      Como bien dices la idea es aprender entre todos. Muchas gracias.
      Si tienes algún otro aporte al blog será magnífico que puedas compartirlo.
      Un cordial saludo.

      Eliminar
  2. #lista
    x=list(range(0,10,3))
    print(x)
    print(sum(x))

    ResponderEliminar
  3. #Listar los números entre un valor inicial y uno final, con un cierto intervalo.
    # Al final dar la suma de todos los valores listados.

    def run():
    inicial = int(input("Digite valor inicial: "))
    final = int(input("DIgite valor final: "))
    intervalo = int(input("Digite el intervalo: "))
    suma = 0
    for i in range(inicial,final+1,intervalo):
    suma = suma + i
    print(i, end=" ")
    print("la suma es: ",suma)

    run()

    ResponderEliminar