#5
def contabilizarNotas(gabarito, testes):
notas = []
try:
for teste in testes: #obtém a sublistas da lista 1 a 1
nota = 0
for i in range(len(teste)):
if teste[i] not in gabarito: #verificar se cada elemento da sublista esta no gabarito
raise ValueError(f'A alternativa {teste[i]} não é uma opção de alternativa válida')
if teste[i] == gabarito[i]:
#Cada alternativa vale 1 ponto
nota += 1
notas.append(nota)
except ValueError as e:
print(f"{e}")
except Exception as e:
print(f"Um erro ocorreu {e} - {type(e)}")
else:
return notas
gabarito = ['D', 'A', 'B', 'C', 'A']
#testes_sem_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'C', 'A'], ['D', 'B', 'A', 'C', 'A']]
testes_com_ex = [['D', 'A', 'B', 'C', 'A'], ['C', 'A', 'A', 'E', 'A'], ['D', 'B', 'A', 'C', 'A']]
listaNotas = contabilizarNotas(gabarito, testes_com_ex)
print(listaNotas)
#6
import re
def ContemPontuacao(lista) -> bool:
'''
Verificar se lista contém palavras com pontuação
Retorna True caso haja pontuação e False caso não haja
Em caso ter pontuação lança uma exceção do tipo ValueError
'''
lista_tratada = []
try:
for palavra in lista:
if re.search(r'[,.!?]', palavra):
raise ValueError(f'O texto apresenta pontuações na palavra "[" {palavra} "]".')
except ValueError as e:
print(f"{e}")
return True
except Exception as e:
print(f"Um erro ocorreu {e} - {type(e)}")
else:
print('Frase Limpa!')
return False
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!']
#Teste caso lista_tratada
fraseTratada = ContemPontuacao(lista_tratada)
print(fraseTratada)
print('\n')
#teste caso lista_nao_tratada
fraseTratada = ContemPontuacao(lista_nao_tratada)
print(fraseTratada)
#7
def divide_colunas(pressoes, temperaturas)->list:
resultados = []
try:
if len(pressoes) != len(temperaturas):
raise ValueError('As listas não tem o mesmo tamanho')
else:
resultados = [reg for reg in map(lambda p_t: p_t[0] / p_t[1], zip(pressoes, temperaturas))]
return resultados
except ZeroDivisionError:
print(f'Não é possível dividir por zero')
except ValueError:
print(f'As listas não tem o mesmo tamanho')
except Exception as e:
print(f'Um erro ocorreu {e} - {type(e)}')
finally:
resultados
#Dados sem exceção:
pressoes = [100, 120, 140, 160, 180]
temperaturas = [20, 25, 30, 35, 40]
razao = divide_colunas(pressoes, temperaturas)
print(razao)
print('\n')
#1) Exceção de ZeroDivisionError
pressoes = [60, 120, 140, 160, 180]
temperaturas = [0, 25, 30, 35, 40]
razao = divide_colunas(pressoes, temperaturas)
print(razao)
print('\n')
#2) Exceção de ValueError
pressoes = [100, 120, 140, 160]
temperaturas = [20, 25, 30, 35, 40]
razao = divide_colunas(pressoes, temperaturas)
print(razao)