martes, 3 de julio de 2018

Acumular en Python

Reto: Acumulado

Listar los números entre 1 y 10. En la columna contigua sus cuadrados, y en la tercera columna sus cubos. Al final dar la suma de todos los valores de cada columna.



Método 1

Inicializamos con el valor cero las tres variables que recogerán la suma de cada columna. Nos metemos en un blucle for que toma los valores 1 a 10. Acumulamos los valores de cada una de las tres variables s1, s2 y s3. Dentro del bucle imprimimos los valores de cada fila que son i, su cuadrado y su cubo. Finalmente, y fuera del bucle, imprimimos el valor de los acumulados.

s1=0
s2=0
s3=0
for i in range(1,11):
  s1=s1+i
  s2=s2+i**2
  s3=s3+i**3
  print(i,i**2,i**3)
print('_'*11)
print(s1,s2,s3)

Método 2

Inicializamos en cero los valores de las tres variables que acumularan s1, s2 y s3. Nos metemos en un bucle for donde tenemos la variable i para recorrer los números 1 a 10, la variable j contendrá sus cuadrados y la variable k sus cubos. Acumulamos usando s1+=i que equivale a s1=s1+i. Imprimimos, dentro del bucle, los valores i, j, k que constituyen las tres columnas. Finalmente, fuera del bucle, imprimimos los acumulados.

s1=s2=s3=0
for i in range(1,11):
  j=pow(i,2)
  k=pow(i,3)
  s1+=i
  s2+=j
  s3+=k
  print(i,j,k)
print('_'*11)
print(s1,s2,s3)

Método 3

Otra forma de acumular en Python es trabajar con listas y luego sumar todos sus elementos con sum.

a=list()
b=list()
c=list()
for i in range(1,11):
  j=pow(i,2)
  k=pow(i,3)
  a.append(i)
  b.append(j)
  c.append(k)
  print(i,j,k)
print('_'*11)
print(sum(a),sum(b),sum(c))

Método 4

El código está basado en el mostrado en el método 2. Aquí lo que hemos modificado es el formato con el que se muestran los datos en pantalla. Hemos actuado sobre dos tipos de formatos:
  • sobre la alineación derecha y el número de caracteres, por ejemplo {:>3}
  • para mostrar separador de miles (con coma, como los ingleses) a cero decimales {,.0f}

s1=s2=s3=0
for i in range(1,11):
  j=pow(i,2)
  k=pow(i,3)
  s1+=i
  s2+=j
  s3+=k
  print('{:>3}  {:>4}  {:>6,.0f}'.format(i,j,k))
print('{:>3}  {:>4}  {:>6}'.format('_'*3,'_'*4,'_'*5))
print('{:>3}  {:>4}  {:>6,.0f}'.format(s1,s2,s3))

1 comentario:

  1. numeros=[]
    cuadrados=[]
    cubos=[]
    for x in range(1,11):
    numeros.append(x)
    for i in numeros:
    cuadrados.append(i**2)
    for j in numeros:
    cubos.append(j**3)
    for i,j,k in zip(numeros,cuadrados,cubos):
    print(i,' ',j,' ',k)

    ResponderEliminar