1
resposta

Exercicios resolvidos Aquecimento 1-4

Aquecimento

  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.
    Teste o programa com o segundo valor numérico do input igual a 0. Também teste utilizando caracteres textuais no input para checar os tipos de erro que ocorrem.
def divisor():
  n1 = float(input('Informe o primeiro número: '))
  n2 = float(input('Informe o segundo número: '))

  divisao = n1/n2

  print(divisao)

try:
 divisor()
except Exception as e:
  print(type(e),f'Erro:{e}')
  1. 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.
    Teste o programa com um nome presente em uma das chaves do dicionário e com um que não esteja no dicionário para verificar a mensagem de erro.
idades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}
def pesquisar_nome():
  chave = input('Informe uma chave: ')
  verificacao = idades[chave]
  
try:
  pesquisar_nome()
except KeyError:
  print('Nome não encontrado')
else:
  print(verificacao)
  1. 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'.
def conversor(lista):
  try:
    nova_lista = [float(item) for item in lista]
  except Exception as e:
    print(type(e),f'Error: {e}')
  else:
    return nova_lista
  finally:
    print('Fim da execução da função')
  1. Crie uma função que recebe duas listas como parâmetros e agrupe os elementos um a um das listas, formando uma lista de tuplas de 3 elementos, no qual o primeiro e segundo elemento da tupla são os valores na posição i das listas e o terceiro elemento é a soma dos valores na posição i das listas.
    A função deve conter um tratamento de erro indicando o tipo de erro gerado e retornar como resultado a lista de tuplas. Caso as listas enviadas como parâmetro tenham tamanhos diferentes, a função deve retornar um IndexError com a frase: 'A quantidade de elementos em cada lista é diferente.' Dados para testar a função:

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]

lista1 = [4,6,7,9,'A']
lista2 = [-4,'E',8,7,9]
def agrupamento(lista1 , lista2):
  try:
    if len(lista1) == len(lista2):
        listas = [(lista1[i],lista2[i], lista1[i]+lista2[i]) for i in range(len(lista1))]
    else:
        raise IndexError('A quantidade de elementos em cada lista é diferente.')
  except Exception as e:
      print(type(e),f"Erro: {e}")
  else:
    return listas
agrupamento(lista1,lista2)

Atenção é uma coisa importantissima, percebi isso quando o código em listas não estava executando da forma que eu precisava, foi um erro de atenção ao trocar i por 1.

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Olá, Valentina! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de tratamento de exceções para garantir a robustez dos programas, utilizou muito bem estruturas condicionais e de repetição para validar entradas e ainda compreendeu a importância da clareza na lógica para evitar erros sutis, como a troca de variáveis.

Uma dica interessante para o futuro é aplicar o uso de try/except diretamente dentro das funções, tornando o código mais modular e reutilizável. Assim:

def divisor():
  try:
    n1 = float(input('Informe o primeiro número: '))
    n2 = float(input('Informe o segundo número: '))
    print(n1 / n2)
  except Exception as e:
    print(type(e), f'Erro: {e}')

Isso faz com que o tratamento de erro fique encapsulado, facilitando testes e manutenção.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!