FC ConcursosFC Concursos

Questão FC331174

Pedro está dando seus primeiros passos na programação Python e pretende construir uma função para colocar em ordem crescente os elementos de uma lista. A versão corrente do seu scr

Linguagens de Programação

FGV · 2022

Pedro está dando seus primeiros passos na programação Python e pretende construir uma função para colocar em ordem crescente os elementos de uma lista. A versão corrente do seu script de teste é a mostrada abaixo.


def enigma(L):
       for i in range(0, len(L)-2):
            achou=False
            for j in range(1, len(L) -1):
                 if L[i] > L[j]:
                      L[i], L[j] = L[j], L[i]
                      achou=True
             if achou:
                  break
          return len(L)


x=[4,2,6,5,10]
print (enigma(x))
print (x)


Nesse estágio, a lista exibida pelo último comando print é:

  1. [10, 4, 6, 5, 2]
  2. [2, 6, 5, 4, 10]
  3. [2, 4, 6, 5, 10]
  4. [4, 5, 6, 2, 10]
  5. [4, 2, 5, 6, 10]
Mostrar resposta e comentário

Gabarito

Certo

Comentário do professor

Ao executar o código, a lista final é [2, 4, 6, 5, 10]. Isso acontece porque a função enigma faz apenas a primeira troca necessária e interrompe o processo.

Detalhando: o primeiro for usa range(0, len(L)-2) (para len=5, i = 0,1,2). O segundo for usa range(1, len(L)-1) (j = 1,2,3). Na primeira iteração com i=0, compara-se L[i] com L[j].

Para j=1 temos L[0]=4 e L[1]=2; como 4 > 2 a linha L[i], L[j] = L[j], L[i] faz a troca resultando em [2, 4, 6, 5, 10]. A variável achou passa a True.

Após o término do laço interno, a condição if achou: break provoca a saída do laço externo, impedindo novas trocas. Por isso a lista final permanece [2, 4, 6, 5, 10].

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo