1
resposta

Desafio: hora da prática - Aula 04

Olá! Seguem minhas resoluções para os exercícios propostos da aula 04:

Questão 01:

try:
  n1 = float(input('Digite o primeiro número: '))
  n2 = float(input('Digite o segundo número: '))
  divisao = n1/n2
except Exception as e:
  print(type(e), f'Erro: {e}')
else:
  print(f'A divisao de {n1} por {n2} é igual a {divisao}.')

Questão 02:

idades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}

try:
  nome = input('Digite um nome: ')
  idade = idades[nome]
except KeyError:
  print('Nome não encontrado!')
else:
  print(f'{nome} tem {idade} anos.')

Questão 03:

def converter_float(lista):
  try:
    lista_convertida = [float(valor) for valor in lista]
    return lista_convertida
  except Exception as e:
    print(type(e), f'Erro: {e}')
  else:
    print(lista_convertida)
  finally:
    print('Fim da execução da função')

numeros = [0, 3, 4, 9, 2, 8]
converter_float(numeros)

Questão 04:

def agrupar(lista1, lista2):
  try:
    if len(lista1) == len(lista2):
      lista_agrupada = [(lista1[i], lista2[i], lista1[i] + lista2[i]) for i in range(len(lista1))]
      return lista_agrupada
    else:
      raise IndexError('A quantidade de elementos em cada lista é diferente.')
  except Exception as e:
    print(type(e), f'Erro: {e}.')
  else:
    print(lista_agrupada) 

# lista1 = [4,6,7,9,10]
# lista2 = [-4,6,8,7,9]

# lista1 = [4,6,7,9,10,4]
# lista2 = [-4,6,8,7,9]

lista1 = [4,6,7,9,'A']
lista2 = [-4,'E',8,7,9]

agrupar(lista1, lista2)

Questão 05:

def calcula_pontuacao(lista_testes):
  gabarito = ['D', 'A', 'B', 'C', 'A']
  pontos = []
  try:
    for teste in lista_testes:
      notas = []
      for i in range(len(teste)):
        if teste[i] not in gabarito:
          raise ValueError(f'A alternativa {teste[i]} não é uma opção de alternativa válida')
        elif teste[i] == gabarito[i]:
          notas.append(1)
        else:
          notas.append(0)
      pontos.append(notas)
      pontuacao_total = [sum(notas) for notas in pontos]
  except Exception as e:
    print(e)
  else:
    return pontuacao_total

Questão 06:

def verifica_tratamento(lista):
  pontuacoes = [',', '.', '!', '?']
  try:
    for palavra in lista:
      if any(char in palavra for char in pontuacoes):
        raise ValueError(f' O texto apresenta pontuações na palavra "{palavra}"')
  except Exception as e:
    print(e)
  else:
    print('O tratamento para retirada dos símbolos de pontuação foi realizado.')

Questão 07:

def divide_colunas(lista_pressoes, lista_temperaturas):
  try:
    if len(lista_pressoes) != len(lista_temperaturas):
      raise ValueError('As listas não tem o mesmo tamanho. Favor verificar.')
    razao = [round((pressao / temperatura), 1) for pressao, temperatura in zip(lista_pressoes, lista_temperaturas)]
    return razao
  except ValueError as e:
    print(e)
  except ZeroDivisionError as e:
    print('A lista de temperaturas não pode possuir um valor igual a 0. Favor verificar.')
  else:
    print(razao)

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

Oi! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você apresentou soluções bem estruturadas para o tratamento de exceções, usando try, except, else e finally de forma consistente. Parabéns!

Uma dica interessante para o futuro é testar o método get() em dicionários, que evita erros de chave inexistente e permite definir um valor padrão. Veja este exemplo:


idades = {'Julia': 16, 'Carol': 23, 'Alberto': 19}

nome = input('Digite um nome: ')
idade = idades.get(nome, 'Nome nao encontrado')
print(idade)

O método get() busca o valor de uma chave e, se ela não existir, retorna o texto informado como padrão.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

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