1
resposta

[Projeto] Resoluções da Hora de praticar

Aquecimento - 1

try:
  num1 = float(input('Digite um número: '))
  num2 = float(input('Digite um número: '))
  divisao = num1/num2
except Exception as e:
  print(type(e), f'Erro: {e}')

Aquecimento - 2

idades = {'Júlia': 16, 'Carol': 23, 'Alberto': 19, 'Roberta': 17}
chave = input('Digite o nome: ')
try:
  idades[chave]

except KeyError:
  print('Nome não encontrado')

else:
  print(idades[chave])

Aquecimento - 3

def conversor(lista: list):
  try:
    lista_convertida = [float(item) for item in lista]
  except Exception as e:
    print(type(e), f'Erro: {e}')
  else:
    print(lista_convertida)
  finally:
    print('Execução encerrada')

lista = [1, 2, 'a', 4]
conversor(2)

Aquecimento - 4

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

Projeto - 5

def contarAcertos(respostas, gabarito):
  acertos = 0
  for i in range(len(respostas)):
    if respostas[i] == gabarito[i]:
      acertos +=1
  return acertos

def verificarErros(teste, gabarito):  
  try:
    for resposta in teste:
      for i in range(len(resposta)):
        if resposta[i] not in ['A', 'B', 'C', 'D']:
          raise ValueError(f'A alternativa {resposta[i]} não é uma opção de alternativa válida')
    lista_soma_acertos = [contarAcertos(item, gabarito) for item in teste]
  except Exception as e:
    print(type(e), f'Erro: {e}')
  else:
    print(lista_soma_acertos)
  finally:
    print('Finalizado!')

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']]

verificarErros(testes_sem_ex, gabarito)
verificarErros(testes_com_ex, gabarito)

Projeto - 6

'''
Recebe ua lista com palavras separadas de uma frase
Criar função:
- Verificar se o tratamento para retirada se simbolos foi realizado
    if not: Value error que aponte o 1º caso em que foi detectado o uso de pontuação
'''

def verificaTratamento (lista):
  simbolos = [',', '.', '!', '?']
  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}"')
  except Exception as e:
    listaTratada = False
    print(e)
  else:
    listaTratada = True
  finally:
    return listaTratada

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!']

print(f'Lista tratada: {verificaTratamento(lista_tratada)}')
print(f'Lista tratada: {verificaTratamento(lista_nao_tratada)}')

Projeto - 7

def divide_colunas(pressao: list, temp: list) -> list:
  '''
  Primeiro Argumento -> pressão (lista)
  Segundo Argumento -> temperatura (lista)

  Exceções tratadas:
    Verificar se as listas tem o mesmo tamanho (ValueError)
    Verificar se existe alguma divisão por zero (ZeroDivisionError)
  Retorna uma lista com os valores da divisão da pressão pela teperatura
  '''
  try:
    if len(pressao) != len(temp):
      raise ValueError('Listas de dados com tamanho diferente')
    elif 0 in temp:
      raise ZeroDivisionError('Existe um valor zero na coluna da temperatura, portanto é impossível realizar a divisão')
    else:
      compilado = list(zip(pressao, temp, [pressao[i]/temp[i] for i in range(len(pressao))]))
  
  except Exception as e:
    print(e)
    return 'Não foi possível dividir as colunas'
  else:
    return compilado

pressoes = [100, 120, 140, 160, 180]
temperaturas = [20, 25, 30, 35, 40]
print(divide_colunas(pressoes, temperaturas))

pressoes = [60, 120, 140, 160, 180]
temperaturas = [0, 25, 30, 35, 40]
print(divide_colunas(pressoes, temperaturas))

pressoes = [100, 120, 140, 160]
temperaturas = [20, 25, 30, 35, 40]
print(divide_colunas(pressoes, temperaturas))
1 resposta

Olá Raissa, tudo bem?

Parabéns por sua prática! Gostei muito de como você aplicou o tratamento de exceções, especialmente na criação das tuplas na questão 4.

Uma dica interessante: na conversão de listas (Aquecimento - 3), em vez de usar Exception, tente capturar erros específicos como ValueError. Isso ajuda a tornar o código mais preciso e fácil de entender.

Continue com o ótimo trabalho!