En esta entrada de blog, te guiaré paso a paso en la creación de un programa en Python que busca la palabra «hola» dentro de una matriz (una lista de listas). Este programa es ideal para aquellos que desean practicar la manipulación de matrices y trabajar con cadenas de caracteres en Python.
Paso 1: Comprender el Problema
El objetivo de este programa es buscar la palabra «hola» de forma horizontal y vertical dentro de una matriz de letras. Además, también queremos identificar todas las posiciones en la matriz donde se encuentra la letra ‘h’.
Paso 2: Definir la Función buscar_hola
Primero, definimos nuestra función buscar_hola
, que tomará como argumento una matriz. Esta función se encargará de realizar la búsqueda de la palabra «hola» en diferentes direcciones.
def buscar_hola(matriz): filas = len(matriz) # Número de filas en la matriz columnas = len(matriz[0]) # Número de columnas en la matriz palabra = "hola" # La palabra que queremos buscar len_palabra = len(palabra) # Longitud de la palabra
Paso 3: Búsqueda Horizontal
Dentro de la función, el primer paso es buscar la palabra «hola» de forma horizontal, es decir, de izquierda a derecha en cada fila de la matriz.
# Buscar horizontalmente for i in range(filas): for j in range(columnas - len_palabra + 1): # Comparar las letras consecutivas en la fila con la palabra "hola" if ''.join(matriz[i][j:j+len_palabra]) == palabra: print(f"Palabra '{palabra}' encontrada horizontalmente en la fila {i}, columna {j}")
Explicación:
- Usamos dos bucles
for
: el primero recorre cada fila (i
), y el segundo recorre las columnas dentro de cada fila (j
). - La condición
columnas - len_palabra + 1
asegura que no nos salgamos de los límites de la matriz. - La función
''.join(matriz[i][j:j+len_palabra])
une las letras desde la posiciónj
hastaj+len_palabra
en una cadena y la compara con «hola».
Paso 4: Búsqueda Vertical
Ahora, buscaremos la palabra «hola» de forma vertical, es decir, de arriba hacia abajo en cada columna.
# Buscar verticalmente for i in range(filas - len_palabra + 1): for j in range(columnas): vertical_word = ''.join([matriz[i+k][j] for k in range(len_palabra)]) if vertical_word == palabra: print(f"Palabra '{palabra}' encontrada verticalmente en la fila {i}, columna {j}")
Explicación:
- Aquí, el bucle
for
externo recorre las filas, pero solo hastafilas - len_palabra + 1
para evitar salirnos de los límites. - El bucle interno recorre cada columna.
- Usamos una lista de comprensión para construir la palabra vertical y la comparamos con «hola».
Paso 5: Búsqueda de la Letra ‘h’
Finalmente, queremos encontrar todas las posiciones donde aparece la letra ‘h’ en la matriz.
# Buscar letras 'h' for i in range(filas): for j in range(columnas): if matriz[i][j] == 'h': print(f"Letra 'h' encontrada en la fila {i}, columna {j}")
Explicación:
- Este es un simple recorrido de toda la matriz donde verificamos si la letra en cada posición es ‘h’.
Paso 6: Probar el Programa
Para probar nuestro programa, creamos una matriz de ejemplo y llamamos a la función buscar_hola
.
matriz = [ ['a', 'b', 'h', 'x', 'z'], ['c', 'q', 'o', 'r', 'y'], ['h', 'o', 'l', 'a', 'z'], ['q', 's', 'a', 'n', 'z'], ['l', 'k', 'q', 'x', 't'], ['h', 'j', 'k', 'n', 'z'] ] buscar_hola(matriz)
Al ejecutar este código, el programa debería imprimir las posiciones donde se encuentra la palabra «hola» de manera horizontal y vertical, así como las posiciones de cada letra ‘h’.
Este programa es un excelente ejercicio para trabajar con matrices y cadenas en Python. Nos permite practicar la iteración sobre listas, la manipulación de subcadenas y la comparación de cadenas. ¡Espero que te haya sido útil este tutorial!
def buscar_hola(matriz): filas = len(matriz) columnas = len(matriz[0]) palabra = "hola" len_palabra = len(palabra) # Buscar horizontalmente for i in range(filas): for j in range(columnas - len_palabra + 1): if ''.join(matriz[i][j:j+len_palabra]) == palabra: print(f"Palabra '{palabra}' encontrada horizontalmente en la fila {i}, columna {j}") # Buscar verticalmente for i in range(filas - len_palabra + 1): for j in range(columnas): vertical_word = ''.join([matriz[i+k][j] for k in range(len_palabra)]) if vertical_word == palabra: print(f"Palabra '{palabra}' encontrada verticalmente en la fila {i}, columna {j}") # Buscar letras 'h' for i in range(filas): for j in range(columnas): if matriz[i][j] == 'h': print(f"Letra 'h' encontrada en la fila {i}, columna {j}") matriz = [ ['a', 'b', 'h', 'x', 'z'], ['c', 'q', 'o', 'r', 'y'], ['h', 'o', 'l', 'a', 'z'], ['q', 's', 'a', 'n', 'z'], ['l', 'k', 'q', 'x', 't'], ['h', 'j', 'k', 'n', 'z'] ] buscar_hola(matriz)