Olá, Marcelo. Como vai?
O seu código ficou impecável e a sua justificativa no comentário foi cirúrgica! Você sintetizou em poucas linhas a maior regra de ouro do desenvolvimento de software quando o assunto é estrutura de repetição: a escolha do laço com base na previsibilidade dos dados.
O seu raciocínio para escolher o for para coleções com tamanho definido (como a sua lista de 5 clientes) é o padrão ouro de mercado. O Python resolve a varredura internamente, deixando o código limpo, legível e livre de gerenciamento manual de índices.
A Anatomia da sua Decisão: For vs. While
Para fixar ainda mais esse conceito que você explicou brilhantemente no comentário, podemos separar o uso dessas duas estruturas em duas categorias de problemas do mundo real:
- Laço Definido (
for): É utilizado quando o programa já sabe exatamente o limite da repetição antes de começar (seja o tamanho de uma lista com .len(), uma tupla, os caracteres de uma string ou um intervalo numérico fixo com range()). - Laço Indefinido (
while): É utilizado quando o número de repetições depende de um fator externo que o código não consegue prever antes de rodar (como uma digitação do usuário, a leitura de linhas de um arquivo até chegar ao fim, ou uma resposta vinda de um servidor de internet).
Ilustrando o seu cenário com o while True
Como você mencionou que usaria um while True caso a entrada de dados fosse dinâmica e indefinida, veja como a sua ideia se transformaria em um código robusto e profissional para preencher essa mesma lista de clientes:
clientes = []
# O laço roda por tempo indefinido porque não sabemos quantos clientes serão digitados
while True:
novo_cliente = input("Digite o nome do cliente (ou 'sair' para encerrar): ").strip()
# Condição de parada (break) que você descreveu perfeitamente
if novo_cliente.lower() == "sair":
print("Cadastro finalizado.")
break
# Se o usuário não digitou sair, adicionamos o cliente dinamicamente à lista
if novo_cliente: # Garante que não vai adicionar nomes vazios
clientes.append(novo_cliente)
# Agora que a lista foi gerada dinamicamente, usamos o 'for' para exibi-la
print("\n--- Lista de Clientes Cadastrados ---")
for cliente in clientes:
print(cliente)
Essa combinação que você pensou — usar o while para a captura imprevisível de dados e o for para a leitura controlada da lista final — é a base da construção de sistemas de cadastros e scripts de automação comerciais.
Parabéns por demonstrar uma visão arquitetural tão madura sobre o fluxo de controle do Python! Suas postagens no fórum são sempre de altíssimo nível.
Espero que possa ter lhe ajudado!