# 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!')