0
respostas

Desafio - Projetos

# Desafio: hora da prática
# Aplicando a projetos

#5. Como desafio, você recebeu a tarefa de desenvolver um código que contabiliza as pontuações de estudantes de uma instituição de ensino

gabarito = ['D', 'A', 'B', 'C', 'A']
#Notas sem exceção:
testes_sem_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'C', 'A'], ['D', 'B', 'A', 'C', 'A']]
#Notas com exceção:
testes_com_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'E', 'A'], ['D', 'B', 'A', 'C', 'A']]

def valida_testes(lista_testes, gabarito: list = [0]):
  for teste in lista_testes:
    for i in range (0,5):
      if teste[i] not in gabarito: raise ValueError(f'A alternativa {teste[i]} não é uma opção de alternativa válida')

def computa_notas(lista_testes, gabarito: list = [0]):
  lista_notas = []
  valida_testes(lista_testes, gabarito)
  for teste in lista_testes:
    lista_notas.append(sum([1 if nota == resposta else 0 for nota, resposta in zip(teste, gabarito)]))
  return lista_notas

try:
  lista_notas = computa_notas(testes_sem_ex, gabarito)
except ValueError as mensagem_erro:
  print(mensagem_erro)
else:
  print(lista_notas)
finally:
  print('Fim!')

# 6. Você está trabalhando com processamento de linguagem natural (NLP) e, dessa vez, sua líder requisitou que você 

caracteres_especiais = [',', '.', '!', '?']

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_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 verifica_pontuacao(texto, caracteres_especiais: list = [0]):
  for palavra in texto: 
    if any(caractere in palavra for caractere in caracteres_especiais):
      raise ValueError(f'O texto apresenta pontuações na palavra "{palavra}".')

try: 
  verifica_pontuacao(lista_nao_tratada, caracteres_especiais)
except ValueError as mensagem:
  print(mensagem)
else:
  print(f'Texto validado com sucesso, não possui caracteres especiais!')
finally:
  print('Fim!')


#7. 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.

#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]
#Dados com exceção: 2) Exceção de ValueError
#pressoes = [100, 120, 140, 160]
#temperaturas = [20, 25, 30, 35, 40]

def divide_colunas(pressoes, temperaturas: list=[0]):
  if len(pressoes) == len(temperaturas):
    lista_calculada = list( [pressao, temperatura, pressao / temperatura] for pressao, temperatura in zip(pressoes, temperaturas))
    return lista_calculada
  else:
    raise ValueError('As listas possuem tamanhos diferentes!')

try:
  lista_calculada = divide_colunas(pressoes, temperaturas)
except ValueError as mensagem:
  print(mensagem)
except ZeroDivisionError:
  print('Não pode ser feita a divisão por 0!')
else:
  print(lista_calculada)
finally:
  print('Fim!')