Aquecimento
Q1
def divisao(num1, num2):
return num1 / num2
try:
num1 = float(input("Digite o primeiro número: "))
num2 = float(input("Digite o segundo número: "))
resultado = divisao(num1, num2)
except ValueError as e:
print(f"Erro de valor: {e}")
except ZeroDivisionError as e:
print(f"Erro de divisão por zero: {e}")
else:
print(f"O resultado da divisão é: {resultado}")
finally:
print("Fim do programa")
Q2
idades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}
try:
nome = input("Digite o nome: ")
if idades[nome]:
print(f"Nome encontrado")
except KeyError as e:
print(f"Nome não encontrado")
finally:
print("Fim do programa")
Q3
def conversorFloat(list):
try:
for i in range(len(list)):
list[i] = float(list[i])
return list
except ValueError as e:
print(f"Erro de valor: Algum item da lista não é um número")
finally:
print("Fim da execução da função")
lista = [1, 'b', 3, 4, 5]
print(conversorFloat(lista))
Q4.
Valores sem erro:
lista1 = [4,6,7,9,10]
lista2 = [-4,6,8,7,9]
Listas com tamanhos diferentes:
lista1 = [4,6,7,9,10,4]
lista2 = [-4,6,8,7,9]
Listas com valores incoerentes:
lista1 = [4,6,7,9,'A']
lista2 = [-4,'E',8,7,9]
def soma_listas(lista1, lista2):
lista_tuplas = []
try:
if len(lista1) != len(lista2):
raise IndexError(
"A quantidade de elementos em cada lista é diferente."
)
for i in range(len(lista1)):
lista_tuplas.append(
(lista1[i], lista2[i], lista1[i] + lista2[i])
)
return lista_tuplas
except IndexError as e:
print(e)
except TypeError as e:
print(f"Erro de tipo: {e}")
finally:
print("Fim da execução da função")
print(soma_listas(lista1, lista2))
Aplicando a projetos
Q5.gabarito = ['D', 'A', 'B', 'C', 'A']
testes_sem_ex = [
['D', 'A', 'B', 'C', 'A'],
['C', 'A', 'A', 'C', 'A'],
['D', 'B', 'A', 'C', 'A']
]
def corrige_provas(testes, gabarito):
alternativas_validas = ['A', 'B', 'C', 'D']
notas = []
for teste in testes:
nota = 0
for resposta, correta in zip(teste, gabarito):
if resposta not in alternativas_validas:
raise ValueError(
f"A alternativa {resposta} não é uma opção de alternativa válida"
)
if resposta == correta:
nota += 1
notas.append(nota)
return notas
try:
print(corrige_provas(testes_sem_ex, gabarito))
except ValueError as e:
print(e)
Q6
pontuacao_simbolos = [',', '.', '!', '?']
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 tratar_lista(lista, pontuacoes):
try:
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}".'
)
print("O texto não apresenta pontuações.")
except ValueError as e:
print(e)
finally:
print("Fim da execução da função")
tratar_lista(lista_nao_tratada, pontuacao_simbolos)
#Q7
pressoes = [100, 120, 140, 160, 180]
temperaturas = [20, 25, 30, 35, 40]
def divide_colunas(pressao, temperatura):
try:
if len(pressao) != len(temperatura):
raise ValueError(
"A quantidade de elementos em cada lista é diferente."
)
razao_pressao_temperatura = []
for p, t in zip(pressao, temperatura):
if t == 0:
raise ZeroDivisionError(
"Não é possível dividir por zero."
)
razao = p / t
razao_pressao_temperatura.append(round(razao,2))
return razao_pressao_temperatura
except ValueError as e:
print(e)
except ZeroDivisionError as e:
print(e)
finally:
print("Fim da execução da função")
resultado = divide_colunas(pressoes, temperaturas)
print(resultado)