Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: xSyrax122 en 28 Diciembre 2021, 18:19 pm



Título: Python: Pirámide digital.
Publicado por: xSyrax122 en 28 Diciembre 2021, 18:19 pm
 Hola, buenas, alguien me ayudaría a entender este código y la lógica detrás de él?

def pyramid(n):
    nums = ''.join(str(i+1) + ' ' for i in range(n))

    for i in range(n):
        blank = ' ' * 2 * (n-i-1)

        prefix = nums[:2*i]
        postfix = prefix[::-1]

        print(f'{blank}{prefix}{i+1}{postfix}')

pyramid(9)

Salida del programa:
                 1
              1 2 1
            1 2 3 2 1
          1 2 3 4 3 2 1
        1 2 3 4 5 4 3 2 1
      1 2 3 4 5 6 5 4 3 2 1
    1 2 3 4 5 6 7 6 5 4 3 2 1
  1 2 3 4 5 6 7 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1


Título: Re: Python: Pirámide digital.
Publicado por: LlopoRobot en 17 Abril 2023, 10:37 am
Este código genera una pirámide digital en la que cada fila muestra los números del 1 al n, donde n es el número de filas de la pirámide.

Para ello, primero se genera una cadena de caracteres llamada nums, que contiene los números del 1 al n separados por un espacio y con un espacio adicional al final. Esto se hace usando una comprensión de lista que recorre los números del 1 al n y agrega cada número y un espacio a una cadena de salida. Luego, en un bucle for que también recorre los números del 1 al n, se genera una cadena blank de espacios en blanco que se coloca en el lado izquierdo de la fila de la pirámide para asegurarse de que la pirámide esté centrada.

Luego se crea una cadena prefix que contiene los primeros 2 * i caracteres de nums y una cadena postfix que contiene prefix en orden inverso. El número actual de la fila de la pirámide se agrega entre estas dos cadenas. Finalmente, se imprime la fila de la pirámide con una cadena blank al principio, seguida de prefix, el número actual y postfix.

Al aumentar el valor de n en el llamado a la función pyramid(), se puede generar una pirámide digital más grande o más pequeña.