usando lambda, e a partir de um numero limite digitado, estou tentando gerar uma lista com os números pares até esse numero, eis o meu código.
termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0 :
print("Erro de Sintaxe!!!!")
print (pares = lambda pares : [pares for pares in range(0,termos1)if termos1 % 2 ==0])
não estou conseguindo gerar essa lista, mesmo imprimindo
Você não pode fazer simplesmente assim?
termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0 :
print("Erro de Sintaxe!!!!")
pares = [x for x in range(termos1 + 1) if x%2 == 0]
print(pares)
Usando lambda ( não sei se tem um sintaxe mais limpa):
termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0 :
print("Erro de Sintaxe!!!!")
calcular_pares = lambda limite: [x for x in range(limite + 1) if x%2 == 0]
print(calcular_pares(termos1))
Não precisa fazer um range
de 1 em 1 e ir testando o resto da divisão. Se você começa o range
em zero, basta fazer ele pular de 2 em 2:
termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0:
print("Erro de Sintaxe!!!!")
print([n for n in range(0, termos1 + 1, 2) ])
Repare no range(0, termos1 + 1, 2)
. Os argumentos que passei são:
-
0
: o valor inicial
-
termos1 + 1
: o valor final (como em um range
o valor final não é incluso, eu somo 1 para que ele faça parte). Não ficou claro se deve ser incluso - por exemplo, se digitar “20”, o 20 deve fazer parte da lista? Em caso afirmativo, some 1, senão use apenas termos1
-
2
: é o “passo”, ou seja, o range
vai pular de 2 em 2. Como eu comecei do zero, então é garantido que só terá números pares
Não precisa de lambda, afinal o lambda no fundo é apenas uma sintaxe “alternativa” para funções curtas (leia mais a respeito aqui), mas se você só precisa gerar a lista, me parece desnecessário.
A menos, é claro, que você vá reaproveitar o algoritmo para gerar outras listas, aí até faria sentido ter uma função ou um lambda para isso.
Veja como ficaria:
# definir o lambda, recebe um valor máximo e gera a lista com os números pares até este valor
gerar_pares = lambda maximo: [n for n in range(0, maximo + 1, 2) ]
termos1 = int(input("Qual o final da lista de numeros pares vc quer imprimir? "))
if termos1 < 0:
print("Erro de Sintaxe!!!!")
print(gerar_pares(termos1))
Repare que primeiro eu crio o lambda, depois eu chamo ele passando termos1
como argumento. No seu código você estava criando-o dentro do print
, mas não estava chamando-o.