Contador Palabras: Lógica de Programación #5

Contador Palabras

Contando Palabras y Palabras Únicas

Esta semana vamos a detallar paso a paso una función en Python que cuenta el número total de palabras y el número de palabras únicas en una frase dada. Este es el quinto ejercicio de una serie semanal de lógica de programación. 

A lo largo del artículo, profundizaremos en cada parte del código y explicaremos su propósito y funcionamiento.

La función principal de este ejercicio es contar_palabras, que toma una frase como entrada y devuelve dos valores: el total de palabras y el total de palabras únicas en la frase. Vamos a desglosar el código línea por línea.

Análisis

Python

def count_words(phrase):
    

Esta línea define la función count_words que acepta una sola entrada: phrase. La función encapsula toda la lógica necesaria para contar las palabras en la frase proporcionada.

Python

def normalize(word):
    word = word.lower()
    word = ''.join(c for c in word if c.isalnum())
    return word
    

La función normalize se define dentro de count_words para convertir las palabras a minúsculas y eliminar todos los caracteres no alfanuméricos. Este proceso ayuda a tratar palabras como “Word”, “word”, y “word!” de manera uniforme. La función realiza dos operaciones principales:

  • Convertir a Minúsculas: word.lower() convierte todas las letras de la palabra a minúsculas.
  • Eliminar Caracteres no Alfanuméricos: ‘ ‘.join(c for c in word if c.isalnum()) utiliza una comprensión de listas para reconstruir la palabra incluyendo solo los caracteres alfanuméricos.

  1. c for c in word if c.isalnum(): Esta es una comprensión de listas que recorre cada carácter c en la palabra word y selecciona solo aquellos caracteres que son alfanuméricos (es decir, letras y números). El método isalnum() es un método de las cadenas de texto en Python que devuelve True si el carácter es una letra o un número, y False en caso contrario.
  2.  ”.join(…): La función join() se utiliza para concatenar todos los caracteres seleccionados en una nueva cadena de texto. El ‘ ‘ al principio indica que los caracteres se unirán sin ningún separador entre ellos.

Python

words = phrase.split()
    

La función split() divide la frase en una lista de palabras utilizando los espacios como separadores. Por ejemplo, la frase “Hello world” se convertiría en la lista [“Hello”, “world”].

Python

normalized_words = [
    normalize(word)
    for word in words
]
    

Utilizamos una comprensión de listas para aplicar la función normalize a cada palabra en la lista words. Esto genera una nueva lista normalized_words que contiene todas las palabras normalizadas.

Python

total_words = len(normalized_words)
    

Contamos el número de palabras normalizadas usando len(), que devuelve la longitud de la lista normalized_words. Este valor representa el total de palabras en la frase.

Python

unique_words = set(normalized_words)
 total_unique_words = len(unique_words)
    
  • Convertimos la lista normalized_words a un conjunto (set) para eliminar duplicados. Luego, contamos el número de elementos únicos en el conjunto. Esto nos da el total de palabras únicas en la frase.

Python

return total_words, total_unique_words
    

La función retorna dos valores: el total de palabras y el total de palabras únicas.

Probemos la función con una frase de ejemplo del libro “Coding Theory: Algorithms, Architectures, and Applications” de Andre Neubauer , para ver cómo funciona en la práctica.

Python

phrase = """Modern information and communication systems are based on the reliable and efficient
transmission of information. Channels encountered in practical applications are usually
disturbed regardless of whether they correspond to information transmission over noisy
and time-variant mobile radio channels or to information transmission on optical discs that
might be damaged by scratches. Owing to these disturbances, appropriate channel coding
schemes have to be employed such that errors within the transmitted information can be
detected or even corrected. To this end, channel coding theory provides suitable coding
schemes for error detection and error correction. Besides good code characteristics with
respect to the number of errors that can be detected or corrected, the complexity of the
architectures used for implementing the encoding and decoding algorithms is important for
practical applications."""


total_words, total_unique_words = count_words(phrase)
print("Total words:", total_words)
print("Total unique words:", total_unique_words)
    

Al ejecutar el código anterior, obtenemos:

Python

Total words: 127
Total unique words: 84
    

Puedes ver el script completo en GitHub

Hemos desglosado y explicado cómo construir y entender una función de Python para contar el número total de palabras y el número de palabras únicas en una frase. Hemos profundizado en cada parte del código para asegurar una comprensión clara del proceso. Este tipo de ejercicios es excelente para mejorar tus habilidades de programación y lógica.

Lógica de programación:

  1. Tabla de Multiplicar

  2. Detectar Palíndromos

  3. Encuentra el Número Más Grande

  4. Algoritmo de ordenamiento

¡Suscríbete a nuestro newsletter para recibir noticias y artículos cada semana o mes!

¡Mantente al día con las últimas novedades en marketing, desarrollo web y análisis de datos!

Dejar un comentario

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