find(): buscar la primera vocal en una palabra en Python

Encontrar una vocal o carácter en un string es muy sencillo de hacer en Python debido a que todo string es un objeto y como tal, posee métodos para trabajar sobre él. Haremos uso del método find() y lo explicaré usando un pequeño programa.

Código fuente
#!/usr/bin/env python

def filtrar(i):
    if i != -1:
        return i
    return 45000

palabra = input("ingrese una palabra a evaluar: ")

palabra = palabra.lower()

a = filtrar(palabra.find("a"))
e = filtrar(palabra.find("e"))
i = filtrar(palabra.find("i"))
o = filtrar(palabra.find("o"))
u = filtrar(palabra.find("u"))

#vocal = min(a, min(e, min(i, min(o, u)))) => forma larga
vocal = min([a, e, i, o, u])

print("\nLa primera vocal es: {}".format(palabra[vocal]))
print("Su indice es: {}".format(vocal))

La primera línea es famosa en los sistemas operativos tipo Unix y se llama Shebang, esta línea nos permite ejecutar programas tipo scripting (como Python) desde la terminal sin escribir el nombre del intérprete. Aquí una tabla de ejemplo.

Con ShebangSin Shebang
./programa.pypython programa.py
Función filtrar()
def filtrar(i):
    if i != -1:
        return i
    return 45000

Básicamente esta función lo que hace es recibir un parámetro de tipo int, verifica si es diferente a -1 y devuelve el valor de i, de lo contrario, devuelve el número 45000. La función filtrar() nos ayudará a corregir un error más adelante cuando obtengamos los índices de las vocales debido a que todo valor negativo es menor a todo valor positivo.

Solicitar y leer palabra ingresada por el usuario

El programa lógicamente debe interactuar con el usuario de alguna forma, y en este caso es a través de la terminal.

palabra = input("ingrese una palabra a evaluar: ")

Usamos la función input() para indicarle al usuario que ingrese la palabra que desee evaluar y leer lo que sea ingresado, luego la palabra se almacena en la variable «palabra».

Convertir la palabra a minúscula

Muy posiblemente el usuario ingrese una palabra cuyo contenido contenga letras en mayúscula, es muy conveniente pasar toda la palabra a minúscula para que la búsqueda del índice de cada vocal sea exacto.

palabra = palabra.lower()

Con el método lower() convertimos la información ingresada por el usuario a minúscula y luego es asignada a la misma variable, así que no se requiere crear una nueva variable.

Obtener y filtrar los índices de las vocales

Aquí haremos uso del método find() y de la función filtrar(), que fue explicada anteriormente, para obtener los índices. El método find() solo devuelve 2 valores, -1 o el índice de la primera ocurrencia de un carácter.

a = filtrar(palabra.find("a"))
e = filtrar(palabra.find("e"))
i = filtrar(palabra.find("i"))
o = filtrar(palabra.find("o"))
u = filtrar(palabra.find("u"))

Primero llamamos al método find() para buscar el índice de cada una de las vocales y el valor devuelto es pasado a la función filtrar(), luego el valor devuelto por esta última función es asignado a las variables «a, e, i, o, u».

Función min()

Para poder saber cuál es la primera vocal de una palabra, necesitamos primero saber cual es el índice menor de todos los índices obtenidos. Gracias a que la función filtrar() cambia el valor -1 por el valor 4500, evitaremos errores en este proceso y los datos serán más precisos.

vocal = min([a, e, i, o, u])

Usamos la función min() para obtener el índice menor de los 5 índices encontrados por el método find(), el valor es asignado a la variable «vocal». Esta función se puede usar de dos formas, esta es la forma corta.

Mostrar resultado

Todo programa que interactúa con el usuario muestra algún resultado.

print("\nLa primera vocal es: {}".format(palabra[vocal]))
print("Su indice es: {}".format(vocal))

Por último usamos la función print() para mostrar la primera vocal encontrada y luego su índice. El método format() formatea el texto reemplazando cada juego de «{}» con el valor de cada parámetro que hay entre los paréntesis.

Ejecutando el programa

La única forma de saber si un programa funciona o no, es haciendo una prueba.

[fixedtorres@linuxero]$ ./BuscarPrimeraVocal.py
ingrese una palabra a evaluar: Esto funciona muy bien!!

La primera vocal es: e
Su indice es: 0
[fixedtorres@linuxero]$ 

El programa nos indica que en la palabra «Esto funciona muy bien!!», la primera vocal es la «e» y que se encuentra en el índice 0, lo cual es cierto y demuestra que el programa funciona como lo esperado.

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *