1
resposta

[Sugestão] 4. Lidando com Exceções : 2º Parte

E4.6

def checar_frase(lista):
    palavras_com_pontuacao = []

    for palavra in lista:
        if ',' in palavra or '.' in palavra or '!' in palavra or '?' in palavra:  # ou if any(p in palavra for p in [',', '.', '!', '?']): 
            palavras_com_pontuacao.append(palavra)  
    try:
        if palavras_com_pontuacao:
            raise ValueError(f"O texto apresenta pontuações nas palavras: {', '.join(palavras_com_pontuacao)}.")
        else:
            return("Nenhum erro encontrado. Verificação concluída com sucesso!")
    except ValueError as e:
        return f"Erro detectado: {e}"

# Listas de teste
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!']

# Usando a função
print(checar_frase(lista_tratada))
print(checar_frase(lista_nao_tratada))

E4.7.

def divide_colunas(pressao, temperatura):
    try: 
        if len(pressao) != len(temperatura):
            raise ValueError("Os dados de Pressao e Temperatura possuem tamanhos diferentes.")
        elif 0 in temperatura:
            raise ZeroDivisionError("Não é possível divisão por temperatura igual a zero!")
        else:
            razao = [(p, t, round(p / t , 2)) for p, t in zip(pressao, temperatura)]
            return razao
    except ValueError as t:
        return f"Erro detectado: {t}"
    except ZeroDivisionError as z:
        return f"Erro detectado: {z}"

#Dados sem exceção:
pressoes1 = [100, 120, 140, 160, 180]
temperaturas1 = [20, 25, 30, 35, 40]
print(divide_colunas(pressoes1, temperaturas1))

# Dados com exceção:
# 1) Exceção de ZeroDivisionError
pressoes2 = [60, 120, 140, 160, 180]
temperaturas2 = [0, 25, 30, 35, 40]
print(divide_colunas(pressoes2, temperaturas2))

# 2) Exceção de ValueError
pressoes3 = [100, 120, 140, 160]
temperaturas3 = [20, 25, 30, 35, 40]
print(divide_colunas(pressoes3, temperaturas3))

.

1 resposta

Oi William, tudo bem?

Ambos os códigos estão corretos! Parabéns!

Continue empenhado e não hesite em retornar ao fórum sempre que tiver dúvidas ou quiser compartilhar mais insights.

Abraços e bons estudos!