Olá, Alex. Como vai?
Parabéns pela resolução do exercício e pela excelente organização do seu código! O uso de comentários explicando o que cada linha faz é uma prática fantástica que ajuda muito no aprendizado e na manutenção do código a longo prazo.
Seu entendimento sobre o laço for em Python está certíssimo. Como você bem destacou nos comentários, o for faz esse processo de forma direta e iterável: ele "entra" na lista, pega o primeiro elemento, executa o bloco de código interno (o print), volta para a lista, pega o próximo elemento, e repete isso de forma automatizada até que a lista chegue ao fim.
Para complementar o seu estudo e agregar ainda mais valor à sua prática com laços em Python, quero te mostrar duas variações muito comuns do mercado que utilizam essa mesma estrutura que você criou:
Às vezes, além de exibir o nome do cliente, precisamos saber a posição dele na lista (ex: Cliente 1, Cliente 2...). Para fazer isso de forma elegante em Python, usamos a função integrada enumerate(). Ela nos dá tanto o índice quanto o valor do item. Veja o exemplo:
clientes = ["João", "Maria", "Carlos", "Ana", "Beatriz"]
# O enumerate nos entrega a posição (i) e o nome do cliente
for i, cliente in enumerate(clientes, start=1):
print(f"Cliente {i}: {cliente}")
Imagine que o seu chefe no setor de produção pediu para que todos os nomes dos clientes fossem exibidos com letras maiúsculas para padronizar um relatório. Com o laço for, você pode aplicar métodos de string diretamente na variável temporária:
clientes = ["João", "Maria", "Carlos", "Ana", "Beatriz"]
for cliente in clientes:
# O método .upper() transforma o texto em maiúsculo
print(cliente.upper())
O seu código base está impecável e o resultado no console do PyCharm mostra que a lógica foi executada perfeitamente, sem erros. Continue praticando e documentando seus códigos dessa maneira!
Espero que possa ter lhe ajudado!