1
resposta

Compreendendo laços

Laço for é mais adequado quando se sabe o número de repetições e ideal para percorrer listas e dicionários

def titulo(texto):
    print('=' * len(texto))
    print(texto)
    print('=' * len(texto))

def lista_de_nomes():
    nomes = [input('Digite um nome: ') for c in range(1, 6)]
    return nomes

def listagem(nomes):
    for nome in nomes:
        print(f'{nome}')


def main():
    titulo('NOMES PARA RELATÓRIO')
    nomes = lista_de_nomes()
    listagem(nomes)

if __name__ == '__main__':
    main()
1 resposta

Olá, Giovanni. Como vai?

Excelente iniciativa em compartilhar seu código! Sua definição sobre o uso do laço for está corretíssima: ele é a escolha ideal quando conhecemos previamente o número de repetições (como no seu range(1, 6)) ou quando precisamos percorrer elementos de uma coleção (como na sua função listagem).

Seu código está muito bem estruturado e utiliza conceitos avançados de forma elegante, como a List Comprehension dentro da função lista_de_nomes. Esse recurso deixa o código mais conciso e é muito valorizado na comunidade Python.

Para agregar ainda mais valor ao seu estudo sobre laços, gostaria de destacar dois pontos interessantes baseados no seu script:

  • O uso do range: No seu código, você usou range(1, 6). É importante lembrar que o range no Python funciona com o intervalo fechado no início e aberto no fim. Ou seja, ele começa em 1 e vai até o 5, totalizando as 5 entradas que você planejou.
  • Diferença visual entre for e while: Enquanto o for percorre uma sequência, o while é baseado em uma condição de verdade. Se você quisesse pedir nomes até que o usuário digitasse "sair", o while seria a ferramenta necessária, pois você não saberia de antemão quantas vezes o laço rodaria.

Uma sugestão de boa prática para enriquecer sua função de listagem seria utilizar a função enumerate(). Ela é muito útil quando, além do valor (nome), você também precisa do índice (posição) do item na lista:

def listagem(nomes):
    for i, nome in enumerate(nomes, start=1):
        print(f'{i} - {nome}')

Dessa forma, seu relatório ficaria numerado de 1 a 5 automaticamente. Note que o parâmetro start=1 faz com que a contagem exibida comece em 1, em vez do padrão 0 do Python.

Parabéns pela organização do código e pelo uso do bloco if __name__ == '__main__':, que é uma excelente prática de modularização!

Espero que possa ter lhe ajudado!