Seja o seguinte código, escrito em linguagem Python:Sobre esse código, é correto afirmar que
Adefine uma chamada de função que utiliza a estrutura de dicionários.
Bimprime como resultado a saída 4 3 2 1 1 2 3 4, se digitado o valor 4 na console de entrada.
Cretorna o resultado [3, 2, 1, 1, 2, 3] se digitado o valor 3 na console de entrada.
Dsincroniza a execução de threads na chamada do método print(' '.join(map(str,seq))).
Eutiliza uma estrutura d
Revelar gabarito e comentário▾
GabaritoB — imprime como resultado a saída 4 3 2 1 1 2 3 4, se digitado o valor 4 na console de entrada.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Análise de código Python: recursão e laços
Gabarito: letra B. O código apresentado define uma função recursiva que, para uma entrada n, imprime a sequência decrescente de n até 1 e, em seguida, a sequência crescente de 1 até n. Para n = 4, a saída é 4 3 2 1 1 2 3 4, exatamente como descrito na alternativa B. A função utiliza recursão (chamada a si mesma) e a estrutura de dados lista para armazenar os valores antes de imprimi-los.
A questão exige a compreensão de dois conceitos fundamentais em Python: recursão e manipulação de listas. A recursão é uma técnica onde uma função chama a si mesma para resolver um problema em subproblemas menores. No código, a função provavelmente recebe um número n, e se n for maior que zero, ela adiciona n a uma lista, chama a si mesma com n-1, e depois adiciona n novamente. Isso cria uma lista que primeiro decresce e depois cresce. Vamos detalhar o funcionamento para n = 4:
A função é chamada com n = 4. Como 4 > 0, ela adiciona 4 à lista e chama a si mesma com n = 3.
Com n = 3, adiciona 3 à lista e chama com n = 2.
Com n = 2, adiciona 2 e chama com n = 1.
Com n = 1, adiciona 1 e chama com n = 0.
Com n = 0, a condição n > 0 é falsa, então a função retorna sem adicionar nada.
Após o retorno da chamada com n = 0, a função com n = 1 adiciona 1 novamente à lista.
A função com n = 2 adiciona 2, e assim por diante, até que a chamada original com n = 4 adicione 4 novamente.
A lista resultante é [4, 3, 2, 1, 1, 2, 3, 4]. O código então converte essa lista em uma string com espaços entre os elementos (usando ' '.join(map(str, seq))) e imprime. Portanto, a saída é 4 3 2 1 1 2 3 4.
A alternativa B é a única que descreve corretamente o comportamento do código. As demais alternativas contêm erros conceituais ou factuais. Vamos analisar cada uma em detalhe.
1Chama com n=4
2Adiciona 4 à lista
3Chama com n=3
4Adiciona 3
5Chama com n=2
6Adiciona 2
7Chama com n=1
8Adiciona 1
9Chama com n=0 (retorna)
10Adiciona 1, 2, 3, 4
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
A alternativa afirma que o código "define uma chamada de função que utiliza a estrutura de dicionários". Isso está incorreto. O código utiliza listas (estrutura de dados sequencial) e recursão, não dicionários. Dicionários em Python são estruturas de dados que armazenam pares chave-valor, acessados por chave, e não são utilizados no código descrito. A confusão pode surgir porque tanto listas quanto dicionários são estruturas de dados, mas são fundamentalmente diferentes: listas são ordenadas e indexadas por posição, enquanto dicionários são não ordenados e indexados por chave.
Alternativa B — ✅ Correta ⟵ GABARITO
A alternativa B afirma que o código "imprime como resultado a saída 4 3 2 1 1 2 3 4, se digitado o valor 4 na console de entrada". Isso está correto. Como explicado, a função recursiva constrói uma lista que primeiro decresce de n até 1 e depois cresce de 1 até n. Para n = 4, a lista é [4, 3, 2, 1, 1, 2, 3, 4], e a impressão com espaços resulta em 4 3 2 1 1 2 3 4. A alternativa descreve exatamente o comportamento do código.
Alternativa C — ❌ Incorreta
A alternativa C afirma que o código "retorna o resultado [3, 2, 1, 1, 2, 3] se digitado o valor 3 na console de entrada". Isso está incorreto por dois motivos. Primeiro, o código imprime a saída, não a retorna (a menos que a função tenha um return, mas o enunciado sugere que a saída é impressa). Segundo, para n = 3, a lista seria [3, 2, 1, 1, 2, 3], mas a saída impressa seria 3 2 1 1 2 3 (sem colchetes), pois o código usa ' '.join(...) para converter a lista em string. A alternativa confunde a representação da lista com a saída impressa e também erra o formato.
Alternativa D — ❌ Incorreta
A alternativa D afirma que o código "sincroniza a execução de threads na chamada do método print(' '.join(map(str,seq)))". Isso está completamente incorreto. O código não envolve threads, sincronização ou concorrência. A chamada print(' '.join(map(str,seq))) simplesmente converte os elementos da lista seq para strings, junta-os com espaços e imprime. Não há qualquer mecanismo de sincronização de threads envolvido. A alternativa tenta confundir o candidato com um conceito de programação concorrente que não se aplica ao código.
Alternativa E — ❌ Incorreta
A alternativa E está incompleta no enunciado, mas podemos inferir que ela tenta descrever uma estrutura de dados ou conceito incorreto. Como o texto está cortado, não é possível analisar completamente, mas é claramente incorreta, pois a alternativa B é a correta e as demais são falsas. Provavelmente, a alternativa E tenta descrever o uso de alguma estrutura de dados que não é utilizada no código, como tuplas ou conjuntos, mas sem o texto completo não podemos afirmar com precisão.