Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Praticando Python | 026 | Código | Faça como eu fiz: filtrando números pares

Boa tarde, compartilhando conforme orientação do curso.

# Praticando Python | 026 | Código | Faça como eu fiz: filtrando números pares

# Lucas está desenvolvendo um sistema para gerar relatórios financeiros e precisa filtrar apenas os valores pares de uma lista de números informada pelo usuário.

# Crie um programa que receba uma lista de números e exiba apenas os pares usando a função filter().

# Racional
# Número par: um número é par se o resto da divisão por 2 for igual a zero → n % 2 == 0.
# filter(funcao, iterable): percorre os itens e mantém apenas aqueles para os quais a função retorna True.
# Entrada                     : ler números digitados pelo usuário em uma linha (separados por espaço).
# Processamento               : converter para int e usar filter() com uma função que testa se é par.
# Saída (Formulário Principal): exibir apenas os pares.

# ===================================================================================== #
# Entrada | Interação com o usuário                                                     #
# ===================================================================================== #

'''Função | Listar Números'''
def ler_numeros(msg: str) -> list[int]:
    # Laço infinito
    while True:
        # .strip() para remover espaços
        entrada = input(msg).strip()

        # Verificar se entrada está vazio, sem nada
        if not entrada:
            print('Erro: É necessario digitar um número!')
            continue

        # split() Quebrar a string em partes ("1 2 3" → ["1", "2", "3"]).
        partes = entrada.split()

        # Aqui vamos criar uma lista vazia, a ideia é guardar os inteiros convertidos
        numeros = []

        # Aqui algo pode dar errado, por isso estou usando o try (tente executar esse bloco)
        try:
            # Vamos listar número a número
            for p in partes:
                # append(...): Adiciona o inteiro convertido à lista numeros
                numeros.append(int(p))
            return numeros
        
        # Se o int der algum erro, ele vai entrar aqui
        except ValueError:
            print('Erro: Experimente digitar um número inteiro, exe: 1 2 3')

# ===================================================================================== #
# Processamento                                                                         #
# ===================================================================================== #
'''Função | Validar se o número é par'''
def eh_par(n: int) -> bool:
    return n % 2 == 0

'''Função | Filtrar números pares'''
def filtrar_pares(numeros: list[int]) -> list[int]:
    return list(filter(eh_par, numeros))

# ===================================================================================== #
# Formulário Principal                                                                  #
# ===================================================================================== #
if __name__ == "__main__":
    # Entrada
    numeros = ler_numeros("Digite números separados por espaço: ")

    # Processamento
    pares = filtrar_pares(numeros)

    # Saída
    print("\nRelatório – Números pares")
    print(f"Entrada: {numeros}")
    print(f'Esses são os números {pares} pares.')
2 respostas
solução!

Oi! Como vai?

Do jeito que você explicou, chamou atenção a organização em funções, separando bem entrada, processamento e saída, além do uso correto do filter() junto com uma função dedicada para validar se o número é par, o que deixa o código mais legível e fácil de manter.

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

Muito obrigado.