A maldade na questão, pois a banca faz tudo isso para simplesmente pedir o valor de x. Porém a variável x é criada, mas não há valor algum sendo atribuído a ela, mas apenas à variável i, dessa forma quando executado o código irá imprimir para cada valor de i o valor none para x.
Então x terá [None, None, None, None, None] enquanto i terá [0, 2, 4, 6, 8].
Comentário: MAX Q
Em Python, existe algo chamado forma pitônica, basicamente, é um código enxuto com poucas linhas de código e robusto ao mesmo tempo. Uma das maneiras de materializar uma 'forma pitônica' é através da compreensão de lista. Exatamente o que é abordado na questão:
.
.
A formatação do código é esta:
x = [
print(i)
for i in range(10) if i % 2 == 0
]
Basicamente, o código é lido assim: primeiramente o for i in range(10), posteriormente o if i % 2 == 0 e depois o print(i)
1) O for i in range(10) resultará: 0,1,2,3,4,5,6,7,8,9
2) Por sua vez, o if i % 2 == 0 filtrará os números impares, deixando passar somente os pares: 0,2,4,6,8
O print(i) irá imprimir os valores: 0,2,4,6,8
.
Neste exato momento você pensa:" Tá Max, é exatamente o que o Danilo falou!!!" Calma gafanhoto! Ta indo com muita sede ao pote.
Continuando, o print imprimiu estes valores! Porém que valores foram atribuídos a lista x? Como eu mencionei, na primeira linha, o examinador quer os valores da variável (lista) x e não aquilo que o print imprimiu na tela.
E como eu vejo isto Max? faça isto:
x = [
print(i)
for i in range(10) if i % 2 == 0
]
print(x)
.
A saída do print(x) será: [None, None, None, None, None]
GABARITO ALTERNATIVA D
Mas Max por que isto aconteceu?
Aconteceu porque não for atribuído valores a lista, no lugar de atribuir os valores 0,2,4,6,8 o examinador mandou imprimir na tela, pega ratão né?