Dado um texto armazenado em uma string, faça a função que conte o número de frases que aparecem neste texto. Cada frase no texto é terminada com um ponto final, um ponto de exclamação, um ponto de interrogação ou três pontos em sequência (reticências). Pontos de exclamação ou de interrogação não aparecerão repetidos em sequência no texto e esses símbolos só aparecem no texto terminando uma frase. No exemplo a seguir, são contadas 4 frases: Preciso tirar um cochilo. Meus Deus! Que horas são? Vou perder a minha aula…

Passo 1

Beleza, vamos lá! O que a gente precisa fazer aqui é criar uma função que conta quantas frases existem em um texto. Para isso, vamos usar conceitos de manipulação de strings e identificar os sinais de pontuação que indicam o fim de uma frase, como ponto final (.), ponto de exclamação (!), ponto de interrogação (?) e reticências (...). Vamos precisar entender como verificar esses caracteres no texto para contar corretamente as frases.

Passo 2

Primeiro, vamos entender que uma string é basicamente uma sequência de caracteres, ou seja, o texto que você nos deu está armazenado assim. Nosso objetivo é percorrer essa string e identificar onde cada frase termina.
Para fazer isso, vamos procurar pelos caracteres de pontuação que indicam o fim de uma frase: ., !, ? e .... Cada vez que encontramos um desses sinais, sabemos que uma frase terminou.
Mas tem um detalhe importante: as reticências são três pontos seguidos (...) e contam como uma única pontuação. Precisamos ter certeza de contar isso como uma única frase, e não como três pontos separados.

Passo 3

Vamos pensar em como implementar isso em código. Uma abordagem simples é dividir o texto usando esses caracteres como separadores. Por exemplo, se usarmos o ponto final (.) para dividir, cada parte resultante seria uma frase.
No entanto, como temos vários sinais de pontuação, podemos usar uma expressão regular para dividir a string de uma vez só por qualquer um desses caracteres. Em Python, por exemplo, podemos usar a biblioteca re para isso.
Aqui está um exemplo de como seria essa divisão:
import re

def contar_frases(texto):
    # A expressão regular busca por '.', '!', '?', ou '...'
    frases = re.split(r'\.|\!|\?|\.\.\.', texto)
    # Remove entradas vazias que podem aparecer após a divisão
    frases = [frase for frase in frases if frase.strip()]
    return len(frases)

Passo 4

Vamos detalhar o que está acontecendo no código:
  1. Importação da biblioteca re: Essa é a biblioteca de expressões regulares em Python, que nos ajuda a buscar padrões específicos no texto.
  2. Função contar_frases: Recebe o texto como entrada.
  3. Divisão do texto (re.split): A expressão regular r'\.|\!|\?|\.\.\.' diz para dividir o texto sempre que encontrar um ponto (.), ponto de exclamação (!), ponto de interrogação (?) ou reticências (...).
  4. Remoção de entradas vazias: Após a divisão, pode sobrar partes vazias na lista de frases, então usamos uma list comprehension para remover qualquer string que seja apenas espaços ou vazia.
  5. Retorno da contagem: Finalmente, retornamos o número de frases encontradas usando len(frases).

Resposta

Usando a função acima no exemplo dado, teremos 4 frases contadas:
“Preciso tirar um cochilo.”, “Meus Deus!”, “Que horas são?”, “Vou perder a minha aula…”.

Exercícios relacionados