SóProvas


ID
4832149
Banca
INSTITUTO AOCP
Órgão
MJSP
Ano
2020
Provas
Disciplina
Programação
Assuntos

Um analista do MJSP implementou o seguinte programa em Python:


01 a = [1, 2, 3];

02 b = list(a);

03 print(a);

04 print(b);

05 print(a==b);

06 print(a is b);


Assinale a alternativa que apresenta corretamente o resultado do programa quando executado.

Alternativas
Comentários
  • Resposta C.

    a = [1, 2, 3];

    b = list(a);

    print(a);

    print(b);

    print(a==b);

    print(a is b);

    ---------------------------

    [1, 2, 3]

    [1, 2, 3]

    True

    False

  • GABARITO C!

    Acredito que o que mais causou dúvidas foi o quarto comando de print.

    == compara se as variáveis possuem o mesmo valor. is verifica se ambas se referenciam ao mesmo objeto ou não.

    >>> x = [1, 2]

    >>> y = [1, 2]

    >>> x == y (true)

    >>> x is y (false)

    x e y possuem o mesmo valor [1, 2], mas são objetos diferentes.

    Outro exemplo:

    >>> a = [1, 2, 3]

    >>> b = a

    >>> a is b

    True

    >>> c = list(a)

    >>> a is c

    False

    Foi utilizado list( ) com a finalidade de não utilizar a mesma instância que os identificadores a e b estão associados. Assim conseguimos garantir que teremos uma mesma lista, porém ocupando um outro local na memória. Assim o operador is verifica se duas variáveis apontam para o mesmo objeto na memória.

  • Genteee, que absurdo a questão vem sem o segundo colchete e ainda está certa???

    A resposta do programa é:

    [1, 2, 3 ????????

    [1, 2, 3]

    True

    False

  • Gabarito: C.

    Pessoal, apenas um detalhe:

    O QC errou na digitação no item C, esqueceram de fechar o colchete em [1,2,3. Quem estava em dúvida quanto a isso, pode consultar na prova. É a questão 33.

    Link da prova: https://arquivos.qconcursos.com/prova/arquivo_prova/78297/aocp-2020-mjsp-analista-de-governanca-de-dados-big-data-prova.pdf?_ga=2.59312936.480353860.1603659759-945052076.1595430951

    Bons estudos!

  • Questão interessantíssima para aprender que em Python, apesar de comumente não ser recomendado, é permitido se usar ponto e vírgula ao final das instruções.

    "Em boa parte das linguagens de programação as linhas de código devem terminar com um ponto e vírgula (;). No Python isso é opcional. Um caso onde o ponto e vírgula seria necessário é quando temos mais de um comando em uma mesma linha."

    Fonte: https://www.devmedia.com.br/python-tutorial-tour-pela-linguagem/40646#:~:text=N%C3%A3o%20%C3%A9%20necess%C3%A1rio%20usar

    %20ponto,comando%20em%20uma%20mesma%20linha.

    Comentado por um professor:

    https://cursos.alura.com.br/forum/topico-ponto-e-virgula-e-opcional-50460#:~:text=O%20ponto%20e%20v%C3%ADrgula%20%C3%A9,podem%20causar%20quebra%20de%20funcionalidade.&text=Ent%C3%A3o%20%C3%A9%20bom%20n%C3%A3o%20utilizar%20pra%20evitar%20cometer%20esse%20tipo%20de%20erro.

  • Quer saber a diferença do is e do == ?

    https://dbader.org/blog/difference-between-is-and-equals-in-python

  • Interessante é que "is" do Python é equivalente a "==" do Java, ambos comparam se é a mesma referência.

    Já o "==" do Python se assemelha ao "equals" do Java, ambos comparam o conteúdo.

  • *Complementando:

    Código:

    >> a = [1, 2, 3];

    >> b = list(a);

    A função list() cria uma nova lista, atribuindo os valores de "a" para "b".

    Caso o código fosse alterado para a seguinte forma, sem a função list():

    >> a = [1, 2, 3];

    >> b = a;

    Nesse caso, "b" receberia a instância de "a" e toda alteração realizada na lista de "b" replicaria em "a".

    Assim, o resultado do código alterado seria:

    [1, 2, 3]

    [1, 2, 3]

    True

    True

    Resposta letra c.

    Bons estudos! ;)