1
resposta

projeto] filtrando números pares

Fiz dois projetos para filtrar números pares

Projeto 1

# [projeto] filtrando números pares


numeros = input('Digite os números separados por espaço: ').split(' ')
n_pares = filter(lambda x: int(x) % 2 == 0, numeros) 
print("Números pares:", " ".join(n_pares)) 

Tentei criar a minha própria função Filter_par e tive um pequeno problema na finalização que gostaria que me ajudassem

Projeto 2:

def filter_par(lista):
    lista_aux = []
    for i in range (len(lista)):
        if int(lista[i])%2 == 0:
            lista_aux.append(int(lista[i]))
    return lista_aux

numeros = input('Digite os números separados por espaço: ').split(' ')
print(numeros)
n_pares = filter_par(numeros)
print (f'Números pares: {" ".join(str(n_pares))}') # Saida 1

for i in range (len(n_pares)): #Saída 2
    print (f'Números pares: {n_pares[i]}')
    

Na saída 1 os valores pares (todos corretos) aparecem entre "[ ]"
Na saída 2 aparece uma linha com o texto 'Números pares:' para cada número par da lista original.

COmo seria para que cada elemento da lista n_pares fosse exibido na mesma linha, sem os "[ ]" e com o espaçamento exatamento como indica o enunciado.

Sei que a solução com a função filter é muito mais rápida e sofisticada mas tentei criar a minha própria função e gostaria de ter o resultado exato com a minha funçao filter_par

1 resposta

Olá, Ricardo, como vai?

É ótimo que você tenha explorado diferentes abordagens para resolver o problema, pois isso demonstra um bom entendimento da lógica de programação.

No seu Projeto 2, a lógica da sua função filter_par está correta. O problema acontece na forma como você está exibindo o resultado. Na Saída 1 acontece porque você está convertendo uma lista inteira em uma string antes de juntar os elementos. Para resolver isso, você pode primeiro converter cada número da lista em string para depois utilizar o join. Já na Saída 2 acontece porque você está imprimindo a string “Números pares:” dentro de um loop, o que faz com que a frase se repita.

Para que o resultado seja exibido na mesma linha, sem os colchetes, e com o espaçamento correto, da mesma forma que o exercício pede, você pode fazer assim:

def filter_par(lista):
    lista_aux = []
    for i in range (len(lista)):
        if int(lista[i])%2 == 0:
            lista_aux.append(int(lista[i]))
    return lista_aux

numeros = input('Digite os números separados por espaço: ').split(' ')
n_pares = filter_par(numeros)

n_pares_str = [str(n) for n in n_pares]
print(f'Números pares: {" ".join(n_pares_str)}')

Trecho de código em um terminal mostrando um script Python para filtrar números pares da entrada do usuário, com prompt de entrada e saída exibidos

Nesse exemplo, a linha n_pares_str = [str(n) for n in n_pares] cria uma nova lista chamada n_pares_str, que contém cada um dos números da lista n_pares convertidos para string. Depois, a linha print(f'Números pares: {" ".join(n_pares_str)}') junta todos os elementos da lista n_pares_str em uma única string, separados por espaço, e imprime o resultado na tela.

Espero ter ajudado.

Siga firme nos seus estudos e conte com o fórum sempre que precisar.

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado