Olá para todos. Eu estava tentando resolver o desafio 6 (copiado abaixo) e não consegui. Quando fui observar o gabarito, percebi que o mesmo também não funciona 100%. Algueḿ poderia me ajudar, dizendo o porquê da programação acusar que está "tudo ok" quando na verdade não está?
Segue o enunciado da questão:
Questão 6) Você está trabalhando com processamento de linguagem natural (NLP) e, dessa vez, sua líder requisitou que você criasse um trecho de código que recebe uma lista com as palavras separadas de uma frase gerada pelo ChatGPT.
Você precisa criar uma função que avalia cada palavra desse texto e verificar se o tratamento para retirar os símbolos de pontuação (',' '.', '!' e '?') foi realizado. Caso contrário, será lançada uma exceção do tipo ValueError apontando o 1º caso em que foi detectado o uso de uma pontuação por meio da frase "O texto apresenta pontuações na palavra "[palavra]".". Essa demanda é voltada para a análise do padrão de frases geradas pela inteligência artificial.
Dica: Para verificar se uma ou mais das pontuações estão presentes em cada palavra, utilize a palavra chave or na condição if. Por exemplo, ('a' or 'b') in 'alura' ... Saída: True
Os dados para o teste do código são: (...)
- Lista não tratada:
lista_nao_tratada = ['Python', 'é', 'uma', 'linguagem', 'de', 'programação', 'poderosa,', 'versátil',
'e', 'fácil,', 'de', 'aprender', 'utilizada', 'em', 'diversos', 'campos,', 'desde',
'análise', 'de', 'dados', 'até', 'inteligência', 'artificial!']
Eu criei uma lista apenas para testar a função. Segue a solução parcial que eu tentei:
palavras = ["testando", "vírgula,", "ponto.", "exclamação!", "interrogação?"]
def conferir_tratamento(palavras):
for palavra in palavras:
if ("?" or "!" or "," or ".") in palavra:
raise ValueError(f"O texto apresenta pontuações na palavra {palavra}.")
conferir_tratamento(palavras)
E a saída acusou "tudo ok" para todos as palavras. O que, pra mim, não fez sentido.
Segue o gabarito da questão: Função para avaliar o texto:
# criando a função que recebe a lista de palavras
def avalia_texto(texto: list):
for palavra in texto: # for para iterar por cada palavra
if (',' or '.' or '!' or'?') in palavra: # testando se a palavra possui alguma pontuação
raise ValueError(f'O texto apresenta pontuações na palavra "{palavra}".')
return "Texto já tratado!" # retornando a verificação se não lançada a exceção
Testando com exceção:
# Testando no exemplo que lança exceção
lista_nao_tratada = ['Python', 'é', 'uma', 'linguagem', 'de', 'programação', 'poderosa,', 'versátil',
'e', 'fácil,', 'de', 'aprender', 'utilizada', 'em', 'diversos', 'campos,', 'desde',
'análise', 'de', 'dados', 'até', 'inteligência', 'artificial!']
try:
avaliacao = avalia_texto(lista_nao_tratada)
except Exception as e:
print(e)
else:
print(avaliacao)
Porém, ao testar o gabarito também não acusa algumas pontuações.
palavras = ["exclamação!", "interrogação?"]
try:
avaliacao = avalia_texto(palavras)
except Exception as e:
print(e)
else:
print(avaliacao)
A saída foi "Texto já tratado!" Alguém poderia me dar uma ajudinha com isso? Pra mim nada fez sentido. rs Obrigado e um ótimo dia para todos!