from random import randint

# Definición de las palabras
palabras = ["ESTADISTICA", "DATO", "VARIABLE", "MUESTRA", "MEDIANA",
           "CUALITATIVA", "CUANTITATIVA", "DISCRETOS", "CONTINUOS", "TABLA"]

# Definición de las pistas
pistas = {
    "ESTADISTICA": "Ciencia que se encarga de la **recopilación, organización, análisis e interpretación de datos** (12 letras)",
    "DATO": "Información individual (4 letras)",
    "VARIABLE": "Característica que puede variar de un individuo a otro (7 letras)",
    "MUESTRA": "Subconjunto de la población que se utiliza para obtener información sobre la población completa (6 letras)",
    "MEDIANA": "Valor \"típico\" de una variable (10 letras)",
    "CUALITATIVA": "Variable que no se puede expresar en números (11 letras)",
    "CUANTITATIVA": "Variable que se puede expresar en números (12 letras)",
    "DISCRETOS": "Datos que solo pueden tomar ciertos valores (7 letras)",
    "CONTINUOS": "Datos que pueden tomar cualquier valor dentro de un rango (8 letras)",
    "TABLA": "Forma ordenada de presentar datos (5 letras)"
}

# Generación del crucigrama
def generar_crucigrama():
    # Creación de una matriz de 10x10
    crucigrama = [[" " for i in range(10)] for j in range(10)]

    # Posición actual de la palabra
    x = 0
    y = 0

    # Dirección actual de la palabra (horizontal o vertical)
    direccion = randint(0, 1)

    # Recorrido de las palabras
    for palabra in palabras:
        # Si la palabra no cabe en la matriz, se cambia la dirección
        while (direccion == 0 and (x + len(palabra) > 10 or y + len(palabra) > 10)) or (direccion == 1 and (x + len(palabra) > 10 or y + len(palabra) > 10)):
            direccion = (direccion + 1) % 2

        # Se coloca la palabra en la matriz
        for i in range(len(palabra)):
            crucigrama[y + i * direccion][x] = palabra[i]

        # Se actualiza la posición actual de la palabra
        if direccion == 0:
            x += len(palabra)
        else:
            y += len(palabra)

    return crucigrama

# Impresión del crucigrama
def imprimir_crucigrama(crucigrama):
    for fila in crucigrama:
        print(" ".join(fila))

# Función principal
def main():
    crucigrama = generar_crucigrama()
    imprimir_crucigrama(crucigrama)

    for pista, palabra in pistas.items():
        print(f"{pista}: {palabra}")

if __name__ == "__main__":
    main()

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: