← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

Analise o código Python a seguir. for num in enigma(10): print(num) Dado que a execução desse código exibe 10 números inteiros, a formulação correta para a função enigma é:

Gabarito: A

Em Python, um `for` só consegue percorrer o que seja iterável, e funções que usam `yield` viram geradoras. A sacada aqui é essa: quando a função produz valores com `yield`, ela não devolve tudo de uma vez, ela vai entregando um por um, exatamente para o laço `for` consumir. No enunciado, o código externo faz `for num in enigma(10):`, então a função `enigma` precisa retornar uma sequência de 10 valores inteiros, um por iteração. A opção correta faz isso com `for i in range(n): yield i`, isto é, gera os números de `0` até `n-1`. Com `n = 10`, aparecem 10 inteiros na tela. As outras alternativas quebram essa lógica. `return` encerra a função na primeira passada, então não serve para produzir vários valores em sequência dentro de um `for`. Já expressões como `n * range(n)` e `n!` não são formas válidas de construir esse iterável em Python nesse contexto. Resumo de prova: se a questão fala em percorrer vários valores com `for`, desconfie de funções geradoras. `yield` costuma ser o caminho, porque entrega os itens aos poucos, sem querer bancar o herói e resolver tudo de uma vez.

Continue treinando

Questões relacionadas