## 1. Faça um programa que solicite à pessoa usuária digitar dois números float e calcular a divisão entre esses números. O código deve conter um tratamento de erro, indicando o tipo de erro que foi gerado caso a divisão não seja possível de realizar.
print('CÁLCULO DE DIVISÕES')
print('====================')
try:
entrada1 = input('Informe o primeiro número: ')
entrada2 = input('Informe o segundo número: ')
# Tenta converter as entradas para float
num1 = float(entrada1)
num2 = float(entrada2)
# Verifica se o numerador é zero
if num1 == 0:
raise ValueError('Erro: O primeiro número (numerador) não pode ser zero.')
# Realiza a divisão
resultado = num1 / num2
except ValueError as ve:
if 'could not convert' in str(ve):
print('Erro: Você deve digitar apenas números (sem letras ou símbolos).')
else:
print(ve)
except ZeroDivisionError:
print('Erro: O segundo número (divisor) não pode ser zero.')
else:
# Exibe o resultado da divisão
print(f'O resultado da divisão é: {resultado:.2f}')
finally:
print('Fim do programa.')
## 2. Faça um programa que solicite à pessoa usuária digitar um texto que será uma chave a ser pesquisada no seguinte dicionário: idades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}, armazenando o resultado do valor em uma variável. O código deve conter um tratamento de erro KeyError, imprimindo a informação 'Nome não encontrado', caso ocorra o erro; e imprimir o valor caso não ocorra nenhum.
# Dicionário com nomes e idades
idades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}
try:
# Solicita ao usuário o nome que deseja pesquisar e capitaliza a primeira letra
nome = input('Qual nome você quer pesquisar? ').capitalize()
# Verifica se o nome está no dicionário
if nome in idades:
# Se estiver, exibe o nome e a idade
print(f'{nome}, {idades[nome]} anos.')
else:
# Se não estiver, levanta uma exceção do tipo KeyError
raise KeyError('Nome não encontrado.')
except KeyError as e:
# Captura o erro levantado e exibe a mensagem de erro
print(e)
finally:
print('Fim do programa.')
## 3. Crie uma função que recebe uma lista como parâmetro e converta todos os valores da lista para float. A função deve conter um tratamento de erro indicando o tipo de erro gerado e retornar a lista caso não tenha ocorrido nenhum erro. Por fim, deve ter a cláusula finally para imprimir o texto: 'Fim da execução da função'.
# Criando lista de valores numéricos
quant = int(input('Quantos valores você quer adicionar? '))
valores = []
for i in range(quant):
valor = input(f'Digite o valor {i+1}: ')
valores.append(valor)
# Função que verifica os valores inseridos e retorna os valores válidos e se houve correção
def verifica_valores(valores):
valores_validos = []
houve_correcao = False
for i, valor in enumerate(valores):
while True:
try:
valor_float = float(valor)
if valor_float < 0:
raise ValueError('O valor não pode ser negativo.')
valores_validos.append(valor_float)
break # Valor válido, sai do loop
except ValueError as e:
houve_correcao = True # Marca que houve uma correção
if 'could not convert string to float' in str(e):
print(f'Erro: não foi possível converter o valor "{valor}" para número decimal.')
else:
print(f'Erro ao processar o valor "{valor}" na posição {i + 1}: {e}')
valor = input(f'Digite novamente um valor válido para a posição {i + 1}: ')
return valores_validos, houve_correcao
# Execução principal com finally externo
valores_validos = []
try:
valores_validos, houve_correcao = verifica_valores(valores)
print('Valores válidos:', valores_validos)
finally:
print('Fim da execução da função.')