Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Python_04_Lidando_com_Exceções Atividade 06/07

## 6. Você está trabalhando com processamento de linguagem natural (NLP) e, dessa vez, sua líder requisitou que você criasse um trecho de código que recebe uma lista com as palavras separadas de uma frase gerada pelo ChatGPT.
# Lista de Palavras
lista_palavras = ['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_palavras = ['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!']

# Checando a existência pontuações (',' '.', '!' e '?') 
def verificar_pontuacao(palavras):
    pontuacoes = [',', '.', '!', '?']
    palavras_com_pontuacao = []

    for palavra in palavras:
        if any(pontuacao in palavra for pontuacao in pontuacoes):
            palavras_com_pontuacao.append(palavra)

    if palavras_com_pontuacao:
        raise ValueError(f'O texto apresenta pontuações nas palavras: {", ".join(palavras_com_pontuacao)}')
    
    # Imprimindo a frase se não houver pontuações
    frase = ' '.join(palavras)
    print(f'{frase}.')

# Chamada da função com tratamento de erro
try:
    verificar_pontuacao(lista_palavras)
except ValueError as e:
    print(e)
## 7. Você foi contratado(a) como uma pessoa cientista de dados para auxiliar um laboratório que faz experimentos sobre o comportamento de uma cultura de fungos. O laboratório precisa avaliar constantemente a razão (divisão) entre os dados de pressão e temperatura do ambiente controlado recolhidos durante a experimentação para definir a melhor condição para os testes.
# Listas de Dados
pressoes = [100, 120, 140, 160, 180]
temperaturas = [20, 25, 30, 35, 40 ]

#pressoes = [100, 120, 140, 160]
#temperaturas = [20, 25, 30, 35, 40]

def verificar_dados(pressoes, temperaturas):
    # Verificar se as listas têm o mesmo tamanho
    if len(pressoes) != len(temperaturas):
        raise ValueError("As listas de pressões e temperaturas devem ter o mesmo tamanho.")

    # Verificar divisões por zero
    for i in range(len(pressoes)):
        if temperaturas[i] == 0:
            raise ZeroDivisionError(f"Temperatura não pode ser zero na posição {i}.")

    # Verificar se os valores são numéricos
    for i in range(len(pressoes)):
        if not isinstance(pressoes[i], (int, float)) or not isinstance(temperaturas[i], (int, float)):
            raise TypeError(f"Os valores de pressão e temperatura devem ser numéricos na posição {i}.")

# Se os dados forem válidos, prosseguir com o cálculo
def calcular_razao(pressoes, temperaturas):
    razoes = {}
    for i in range(len(pressoes)):
        razao = pressoes[i] / temperaturas[i]
        razoes[f'Pressão {pressoes[i]} / Temperatura {temperaturas[i]}'] = razao
    return razoes

if __name__ == "__main__":
    try:
        verificar_dados(pressoes, temperaturas)
        razoes = calcular_razao(pressoes, temperaturas)
        for chave, valor in razoes.items():
            print(f"{chave}: {valor:.2f}")
    except (ValueError, ZeroDivisionError, TypeError) as e:
        print(e)
1 resposta
solução!

Ei, Marinaldo! Tudo bem?

Parabéns por mais uma atividade concluída! E agradeço por compartilhar com a comunidade do fórum. Com certeza ajudará algum(a) colega.

Você conhece o método .isalpha()? Que serve para verificar se uma string contém apenas letras, sem precisar listar pontuações manualmente:


palavra = "versátil"
print(palavra.isalpha())  # True

palavra = "versátil!"
print(palavra.isalpha())  # False

Retorna False se houver qualquer pontuação ou número, o que pode simplificar a checagem de palavras com símbolos.

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