Composição de Funções: Análise de Texto:
a) Escreva uma função filtrar_palavras_por_letra(lista_palavras, letra) que receba uma lista de strings e uma letra, e retorne uma nova lista contendo apenas as palavras que começam com a letra especificada.
b) Escreva uma função contar_caracteres_total(lista_palavras) que receba uma lista de palavras e retorne o número total de caracteres em todas as palavras somadas.
c) Demonstre o uso, primeiro filtrando uma lista de palavras para obter apenas as que começam com “a”, e depois passando o resultado para a segunda função para contar o total de caracteres.
a) Escreva uma função filtrar_palavras_por_letra(lista_palavras, letra) que receba uma lista de strings e uma letra, e retorne uma nova lista contendo apenas as palavras que começam com a letra especificada.
b) Escreva uma função contar_caracteres_total(lista_palavras) que receba uma lista de palavras e retorne o número total de caracteres em todas as palavras somadas.
c) Demonstre o uso, primeiro filtrando uma lista de palavras para obter apenas as que começam com “a”, e depois passando o resultado para a segunda função para contar o total de caracteres.
Passo 1
O problema trata de composição de funções em Python aplicadas a listas de strings. Primeiro precisamos de uma função que filtre palavras que comecem por uma certa letra; em seguida, outra que some o comprimento total das palavras de uma lista. Por fim, vamos usar a primeira para obter apenas as palavras que começam com
"a"
e passar esse resultado para a segunda.Passo 2
Definimos a função
\(filtrar_palavras_por_letra\)(\(lista_palavras\), letra)
usando list comprehension. Ela percorre cada palavra em \(lista_palavras\)
e inclui na lista de saída apenas aquelas cuja primeira letra (em minúsculo) batize com letra
(também em minúsculo):def \(filtrar_palavras_por_letra\)(\(lista_palavras\), letra):
letra \(=\) letra.lower()
return [palavra for palavra in \(lista_palavras\)
if palavra and palavra[\(0\)].lower() \(==\) letra]
Passo 3
Definimos a função
\(contar_caracteres_total\)(\(lista_palavras\))
que soma o comprimento (len
) de cada palavra na lista usando a função interna sum
e uma expressão geradora:def \(contar_caracteres_total\)(\(lista_palavras\)):
return sum(len(palavra) for palavra in \(lista_palavras\))
Passo 4
Agora, montamos uma pequena demonstração. Suponha a lista:
palavras \(=\) ["amora", "banana", "abacate", "uva", "arroz", "alho"]
filtradas \(= filtrar_palavras_por_letra\)(palavras, "a")
Isso produz
. Em seguida chamamos
["amora", "abacate", "arroz", "alho"]
.total \(= contar_caracteres_total\)(filtradas)
O valor de
total
será a soma dos comprimentos:\(5+7+5+4=21\)
.Resposta
def \(filtrar_palavras_por_letra\)(\(lista_palavras\), letra):
letra \(=\) letra.lower()
return [palavra for palavra in \(lista_palavras\)
if palavra and palavra[\(0\)].lower() \(==\) letra]
def \(contar_caracteres_total\)(\(lista_palavras\)):
return sum(len(palavra) for palavra in \(lista_palavras\))
# Demonstração
palavras \(=\) ["amora", "banana", "abacate", "uva", "arroz", "alho"]
filtradas \(= filtrar_palavras_por_letra\)(palavras, "a")
print(filtradas) # ['amora', 'abacate', 'arroz', 'alho']
print(\(contar_caracteres_total\)(filtradas)) # \(21\)