Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

[Projeto] Compreendendo Laços

clientes = ["João", "Maria", "Carlos", "Ana", "Beatriz"]

#Usei for porque temos uma lista de tamanho definido e fica mais simples que controlar um contador
#caso fosse um entrada de dados indefinida e a lista fosse dinamicamente preenchida, eu usaria um while True e entrada de dados e uma condição pra break até que todos clientes fossem #inputados

for cliente in clientes:
  print(cliente)
2 respostas
solução!

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!

Grato pelo feedback, estou me divertindo voltando basic to the basics de programação.