1
resposta

[Projeto] Filtrando números pares

def obter_numeros() -> list[str]:
    entrada = input('Digite os numeros separados por espaço: ')
    return entrada.strip().split()


def validar_numeros(numeros: list[str]) -> list[int]:
    numeros_verificados = []

    for numero in numeros:
        try:
            valor = int(numero)
            if valor < 0:
                raise ValueError('Insira apenas números positivos. Tente novamente.')
            numeros_verificados.append(valor)
        except ValueError:
            raise ValueError(f"Valor inválido: '{numero}'. Insira apenas inteiros positivos.")
        
    return numeros_verificados


def verificar_numeros_pares(numero: int) -> bool:
    return numero % 2 == 0


def exibir_numeros_pares(numeros: int) -> None:
    numeros_pares = list(filter(verificar_numeros_pares, numeros))
    print(f'Números pares: {numeros_pares}')


def main():
    while True:
        try:
            numeros_str = obter_numeros()
            numeros_int = validar_numeros(numeros_str)
            exibir_numeros_pares(numeros_int)
            break
        except ValueError as erro:
            print(f'Erro: {erro}')
            print('Tente novamente.\n')


if __name__ == '__main__':
    main()    
1 resposta

Oi, Matheus! Como vai?

Seu uso de funções bem separadas e a lógica de validação com tratamento de exceções chamou bastante atenção. O código está bem organizado e legível, o que facilita a manutenção e reutilização.

Uma dica interessante para o futuro é usar list comprehensions para filtrar números de forma ainda mais concisa.Veja este exemplo:


numeros = [10, 15, 22, 9, 18]
pares = [n for n in numeros if n % 2 == 0]
print(pares)

Esse código cria uma nova lista contendo apenas os números pares da lista original.

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