MediumPython — Reto 1.3: Contador de vocales y consonantes | by denebtech | Medium
Sitemap
Press enter or click to view image in full size

Python — Reto 1.3: Contador de vocales y consonantes

--

Para nuestro último reto vamos a crear un contador de vocales y consonantes en un texto ingresado por el usuario.

Requisitos

El reto consiste en contar la cantidad de ocurrencia de caracteres en un texto ingresado por el usuario para:

  • Vocales (a, e, i, o, u)
  • Consonantes (resto del abecedario)

Para añadir un poco de complejidad, mostraremos la cantidad de palabras, considerando válidas únicamente aquellas que contengan caracteres alfabéticos.

Comencemos a codear

Emplearemos cuatro funciones:

  • Menú para el ingreso del texto del usuario.
  • Función para contar las vocales
  • Función para contar las consonantes
  • Función para contar las palabras
def menu():
print("-" * 50)
print("Contador de vocales y consonantes")

while True:
print("-" * 50)
texto = input("Ingrese un texto: ")

if texto:
break
else:
print("El texto no puede estar vacío. Intente nuevamente.")

return texto


def contar_vocales(texto):
vocales = "aeiouAEIOU"
contador_vocales = sum(1 for letra in texto if letra in vocales)
return contador_vocales


def contar_consonantes(texto):
vocales = "aeiouAEIOU"
contador_consonantes = sum(1 for letra in texto if letra.isalpha() and letra not in vocales)
return contador_consonantes


def contador_palabras(texto):
palabras = [palabra for palabra in texto.split(" ") if palabra.isalpha()]
return len(palabras)

Ahora vamos a agregar el bloque de código que se encargará de ejecutar nuestras funciones, de consultar al usuario si desea seguir probando con otro texto y de realizar las pruebas correspondientes.

if __name__ == "__main__":
while True:
texto = menu()
vocales = contar_vocales(texto)
consonantes = contar_consonantes(texto)
palabras = contador_palabras(texto)

print("-" * 50)
print(f"Texto ingresado: {texto}")
print(f"Número de vocales: {vocales}")
print(f"Número de consonantes: {consonantes}")
print(f"Número de palabras: {palabras}")

print("-" * 50)
continuar = input("¿Desea ingresar otro texto? (s/n): ")
if continuar.lower() != 's':
break
user@host $ python main.py 
--------------------------------------------------
Contador de vocales y consonantes
--------------------------------------------------
Ingrese un texto: Esto es un texto 24 con 17 algunos numeros
--------------------------------------------------
Texto ingresado: Esto es un texto 24 con 17 algunos numeros
Número de vocales: 13
Número de consonantes: 17
Número de palabras: 7
--------------------------------------------------
¿Desea ingresar otro texto? (s/n): s
--------------------------------------------------
Contador de vocales y consonantes
--------------------------------------------------
Ingrese un texto: Este es un texto normal
--------------------------------------------------
Texto ingresado: Este es un texto normal
Número de vocales: 8
Número de consonantes: 11
Número de palabras: 5
--------------------------------------------------
¿Desea ingresar otro texto? (s/n): n

Repositorio con la solución propuesta.

Get denebtech’s stories in your inbox

Join Medium for free to get updates from this writer.

Podemos encontrar muchas mejoras, como por ejemplo:

  • ¿Qué pasa si la palabra está entre paréntesis o entre comillas?
  • ¿Qué pasa si la palabra tiene un signo de puntuación al final, como un punto, una coma o un punto y coma?

¿Te animas a mejorarlo? Happy coding…!

--

--

denebtech
denebtech

Written by denebtech

SRE / DevOps / Pythonist / Cloud Engineer