1
resposta

Exercicios resolvidos Projeto 6-7

  1. 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' in 'alura' or 'b' in 'alura'… Saída: True
    Os dados para o teste do código são:

Lista tratada:
lista_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']

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!']

def tratamento_palavras(lista: list):
  for palavra in lista:
    if ',' in palavra or '.' in palavra or '!'  in palavra or '?' in palavra:
      raise ValueError(f"O texto apresenta pontuações na palavra {palavra}")
  return "Texto já tratado!"
  1. Você foi contratado(a) como uma pessoa cientista de dados para auxiliar um laboratório que faz experimentos sobre o comportamento de uma cultura de fungos. O laboratório precisa avaliar constantemente a razão (divisão) entre os dados de pressão e temperatura do ambiente controlado recolhidos durante a experimentação para definir a melhor condição para os testes.
    Para cumprir com a demanda, você precisa criar uma função divide_colunas que recebe os dados das colunas de pressão e temperatura (que vem no formato de listas) e gerar uma nova coluna com o resultado da divisão. Os parâmetros da função são as duas listas e você deve tratar dentro dela ao menos 2 tipos de exceções:
    Verificar se as listas têm o mesmo tamanho (ValueError)
    Verificar se existe alguma divisão por zero (ZeroDivisionError)
    Para testar a função, vamos realizar a divisão entre duas listas de dados coletados no experimento, com os valores de pressão e temperatura do ambiente controlado.

Como teste, use os seguintes dados:

Dados sem exceção:
pressoes = [100, 120, 140, 160, 180]
temperaturas = [20, 25, 30, 35, 40]

Dados com exceção:

  1. Exceção de ZeroDivisionError

pressoes = [60, 120, 140, 160, 180]
temperaturas = [0, 25, 30, 35, 40]

  1. Exceção de ValueError

pressoes = [100, 120, 140, 160]
temperaturas = [20, 25, 30, 35, 40]

Dica: Você pode usar zip() para parear os dados da lista_1 com a lista_2. Crie uma estrutura try-except que caso uma das exceções sejam lançadas, podemos ver o tipo de erro na saída.

def divide_colunas(coluna1: list, coluna2: list) -> list:
  try: 
    if len(coluna1) != len(coluna2):
      raise ValueError('A quantidade de elementos entre as listas é diferente')
    lista = [round(a/b,2) for a, b in zip(coluna1,coluna2)]
  except ValueError as e:
    print(e)
  except ZeroDivisionError as e:
    print(type(e), f"Os numeros na lista não podem ser divididos por zero")
  else:
    return lista

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Olá, Valentina! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de tratamento de exceções para garantir a integridade dos dados, utilizou muito bem a função zip() para combinar elementos de duas listas e ainda compreendeu a importância da validação de tamanho e divisão segura para evitar erros críticos no programa.

Uma dica interessante para o futuro é adicionar uma verificação preventiva para divisores iguais a zero antes de realizar a operação. Assim:

if 0 in coluna2:
  raise ZeroDivisionError("A lista contém valores iguais a zero, impossibilitando a divisão.")

Isso faz com que o erro seja identificado antes da execução da divisão, tornando o código ainda mais claro e seguro.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!