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)
1
resposta

Compreenção de laços

import os
import time

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

def clear():
    os.system("cls" if os.name == "nt" else "clear")

def sair():
    clear()
    print("Encerrando o programa...")
    time.sleep(3)


def listar():
    clear()
    for cliente in clientes:
        print(cliente)
    input("Persione ENTER para continuar...")

def menu():
    while True:
        clear()
        print("---Comandos---")
        print("|Listar      ""|")
        print("|Sair        ""|")
        print("--------------")

        op = input("Digite um comando: ").lower()

        match op:
            case "listar":
                listar()
            case "sair":
                sair()
                clear()
                break

menu()

Mas, depois de uma pesquisa rápida, encontrei 2 motivos:

1.Evita o risco de loop infinito;
2. O código parece ficar mais otimizado e legível.

Exemplo do código usando while:

def listar():
    indice = 0
    while indice < len(clientes):
        print(clientes[indice])
        indice += 1  # Se esquecer isso, o programa trava!
1 resposta
solução!

Oi, Vinicius, como vai?

Seu código ficou muito interessante porque você expandiu a proposta da atividade e criou uma estrutura de menu interativo para executar as ações. A utilização de funções separadas para listar clientes, limpar a tela e encerrar o programa deixou a organização do código bem clara.

A escolha do for para percorrer a lista foi adequada, principalmente porque você já possui uma coleção definida de clientes. Sua explicação sobre o risco de loop infinito no while também faz sentido, especialmente quando esquecemos de atualizar a variável de controle.

O exemplo que você trouxe usando while demonstra bem essa diferença:

while indice < len(clientes):
    print(clientes[indice])
    indice += 1

Nesse caso, o controle manual do índice exige mais atenção durante a implementação.

Uma dica interessante é que o match case que você utilizou ajuda bastante na organização de menus quando existem várias opções possíveis de comando.

Como foi para você perceber a diferença de complexidade entre percorrer diretamente uma lista com for e controlar manualmente o índice usando while?

Parabéns por ir além da proposta inicial da atividade e explorar novos recursos da linguagem. Esse tipo de prática ajuda bastante no desenvolvimento da lógica e da organização do código. O fórum está à disposição para acompanhar sua evolução.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!