Dibujar un Cuadrado con Asteriscos en Python (Guía paso a paso)

"Cada figura que construyes con código es un pequeño ladrillo en el edificio de tu aprendizaje."

def dibujar_cuadrado(n, relleno=True):
    for i in range(n):
        if relleno or i == 0 or i == n-1:
            print("*" * n)
        else:
            print("*" + " " * (n-2) + "*")

En este tutorial aprenderás paso a paso cómo dibujar un cuadrado con asteriscos en Python.
Comenzaremos con ejemplos simples para principiantes y luego veremos técnicas más avanzadas para crear cuadrados personalizados y alineados.

Conceptos básicos en Python para dibujar con asteriscos

En Python usamos la función print() para mostrar texto en la consola.
Los asteriscos "*" no tienen un significado especial, simplemente son caracteres que podemos repetir.

Ejemplo básico:

print("**")
print("*")
print("***")

Salida:

**
*
***

Con esto podemos empezar a formar patrones.

Cómo dibujar un cuadrado básico con asteriscos en Python

Un cuadrado es simplemente un bloque de asteriscos con el mismo número de filas y columnas.

Ejemplo con for y repeticiones de cadenas

# Dibujar un cuadrado de 5x5
for i in range(5):
    print("*" * 5)

Salida:

*****
*****
*****
*****
*****

Aquí el operador * nos permite repetir un carácter en Python.

Dibujar un cuadrado con bordes en Python

En lugar de un bloque sólido, podemos crear solo el contorno del cuadrado.

n = 5
for i in range(n):
    if i == 0 or i == n-1:  # primera y última fila
        print("*" * n)
    else:  # filas intermedias
        print("*" + " " * (n-2) + "*")

Salida:

*****
*   *
*   *
*   *
*****

Aquí combinamos bucles en Python con condicionales if.

Cuadrado dinámico: controlar el tamaño con variables

Podemos pedir al usuario que elija el tamaño del cuadrado:

n = int(input("Tamaño del cuadrado: "))

for i in range(n):
    print("*" * n)

De esta forma, el cuadrado es flexible y se adapta a la entrada.

Avanzado: función en Python para dibujar cuadrados

Podemos definir una función en Python para reutilizar el código y decidir si queremos un cuadrado sólido o vacío:

def dibujar_cuadrado(n, relleno=True):
    for i in range(n):
        if relleno or i == 0 or i == n-1:
            print("*" * n)
        else:
            print("*" + " " * (n-2) + "*")

# Ejemplos:
dibujar_cuadrado(4, True)   # cuadrado sólido
dibujar_cuadrado(6, False)  # cuadrado vacío

Nivel experto: cuadrado alineado y estilizado en consola

También podemos centrar el cuadrado para que se vea más ordenado:

n = 5
for i in range(n):
    print(("*" * n).center(20))

Salida (centrado en un ancho de 20 caracteres):

       *****
       *****
       *****
       *****
       *****