En esta entrada, te guiaré en la creación de un programa en Python que busca la palabra «hola» dentro de una matriz (una lista de listas). Este ejercicio es perfecto para mejorar tus habilidades en manipulación de matrices y trabajo con cadenas de caracteres en Python.
Paso 1: Comprender el Problema
El objetivo de este programa es buscar la palabra «hola» en una matriz de letras. Buscaremos la palabra de forma horizontal y vertical. Además, identificaremos todas las posiciones donde se encuentra la letra ‘h’.
Paso 2: Definir la Función buscar_hola
Comenzamos definiendo la función buscar_hola
, que tomará una matriz como argumento y realizará la búsqueda.
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
Explicación:
filas
almacena el número de filas de la matriz.columnas
almacena el número de columnas.palabra
es la palabra que estamos buscando.len_palabra
es la longitud de la palabra, lo que nos ayuda a limitar la búsqueda.
Paso 3: Búsqueda Horizontal
Primero, implementamos la búsqueda de la palabra «hola» de forma horizontal.
# Buscar horizontalmente for i in range(filas): for j in range(columnas - len_palabra + 1): if matriz[i][j:j+len_palabra] == list(palabra): print(f"Palabra '{palabra}' encontrada horizontalmente en la fila {i}, columna {j}")
Explicación:
- El bucle externo recorre cada fila (
i
). - El bucle interno recorre las columnas dentro de la fila (
j
), asegurándose de que haya suficiente espacio para buscar la palabra completa. matriz[i][j:j+len_palabra]
selecciona un subconjunto de letras en la fila, y se compara conlist(palabra)
que convierte la palabra en una lista de caracteres.- Si se encuentra la palabra, se imprime su posición en la matriz.
Paso 4: Búsqueda Vertical
A continuación, implementamos la búsqueda vertical.
# Buscar verticalmente for i in range(filas - len_palabra + 1): for j in range(columnas): if [matriz[i+k][j] for k in range(len_palabra)] == list(palabra): print(f"Palabra '{palabra}' encontrada verticalmente en la fila {i}, columna {j}")
Explicación:
- El bucle externo recorre las filas, pero solo hasta
filas - len_palabra + 1
para evitar desbordamientos. - El bucle interno recorre cada columna (
j
). - Utilizamos una lista de comprensión para construir la palabra vertical comparando cada letra con la palabra «hola».
Paso 5: Búsqueda de la Letra ‘h’
Finalmente, buscamos todas las posiciones donde se encuentra la letra ‘h’.
# 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:
- Recorrimos toda la matriz usando dos bucles
for
. - Cada vez que encontramos la letra ‘h’, imprimimos su posición.
Paso 6: Probar el Programa
Probamos el programa con una matriz de ejemplo:
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)
Salida esperada:
El programa debe identificar todas las posiciones donde aparece la palabra «hola» de manera horizontal y vertical, además de las posiciones de cada letra ‘h’.
Este programa es un excelente ejercicio para practicar la manipulación de matrices y el trabajo con cadenas de caracteres en Python. Con cada paso, aprendemos cómo recorrer una matriz, extraer sublistas y comparar cadenas de manera eficiente. ¡Espero que este tutorial te haya sido útil!
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 matriz[i][j:j+len_palabra] == list(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): if [matriz[i+k][j] for k in range(len_palabra)] == list(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)