TransWikia.com

Separando números em listas pares e ímpares - Python

Stack Overflow em Português Asked by user197613 on September 27, 2021

Meu código precisa ler vários números e colocá-los em uma lista, depois, criar duas listas extras contendo apenas os valores pares e ímpares, respectivamente, da lista anterior.

Exemplo:

Entrada = [3, 7, 8, 11, 16, 20]
Saída = Lista completa: [3, 7, 8, 11, 16, 20]
        Lista de pares: [8, 16, 20]
        Lista de ímpares: [3, 7, 11]

Porém os valores não estão sendo adicionados nas listas de números pares e ímpares, qual é o problema do meu código?

valores = pares = impares = list()

while True:
    valores.append(int(input('Digite um valor: ')))

    continuar = ' '
    while continuar not in 'SN':
        continuar = str(input('Continuar? [S / N] ')).upper()[0]
    if continuar in 'N':
        break

print(f'Lista completa: {valores}')

for num in valores:
    if num % 2 == 0:
        pares.append(num)
    else:
        impares.append(num)

print(f'Lista de pares: {pares}')
print(f'Lista de ímpares: {impares}')

3 Answers

O problema do seu código está em

valores = pares = impares = list()

Isso gera apenas uma lista mas com três variáveis a referenciando. Assim, o loop de verificação de par e ímpar nunca para de rodar pois elementos são sempre adicionados a cada iteração. A solução para isso é definir três listas separadas:

valores = []
pares = []
impares = []

Correct answer by Murgalha on September 27, 2021

Para resolver esta questão você deve implementar um algoritmo que monte uma lista formada por todos os valores digitados pelo usuário, em seguida separe os valores ímpares dos pares e, posteriormente os exibam em listas separadas.

Para isso você pode implementar o seguinte algoritmo...

# Criando uma lista com todos os valores digitados:
valores = list(map(int, input('Digite todos os valores desejados: ').split()))

# Separando os valores em pares e ímpares:
impares = list()
pares = list()
for c in valores:
    if c % 2 != 0:
        impares.append(c)
    else:
        pares.append(c)

# Exibindo as listas de valores pares e ímpares:
print(f'33[32mOs números pares são: {pares}')
print(f'Os números ímpares são: {impares}')

Veja aqui o funcionamento do programa.

Observe que quando você executa este programa você recebe a seguinte solicitação...

Digite todos os valores desejados:

Neste momento você tem que digitar todos os valores desejados na mesma linha, separados por apenas 1 espaço, tal como exemplificado abaixo.

4 6 8 9 12 23

Depois de ter inserido todos os valores é só digitar enter. Neste momento o programa irá separar os valores impares e pares e, posteriormente, exibi-los.

Observe também, que para encerrar a inserção de valores na lista, basta pressionar a tecla enter.

Answered by Solkarped on September 27, 2021

É como o colega Murgalha falou, veja se assim não te atende melhor:

lista_completa = [3, 7, 8, 11, 16, 20]
lista_pares = []
lista_impares = []

for c in lista_completa:
  if c % 2 == 0:
    lista_pares.append(c)
  else:
    lista_impares.append(c)

print(lista_impares)
print(lista_pares)

Answered by Felipe Cardoso on September 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP