🌗 ← Índice

🐍 Python P03 — Listas e Loops


Data: 12/06/2026

Nível: Básico




Listas, for, while, range(), enumerate() e métodos como append(), pop() e sort(). Processe coleções com elegância.




O que vamos aprender


  • Criar e manipular listas — o tipo de coleção mais versátil do Python
  • Acessar, adicionar e remover elementos
  • Loop `for` — percorrer listas e sequências
  • Loop `while` — repetir até que uma condição seja False
  • `range()` — gerar sequências numéricas
  • Exemplos práticos com horários, serviços, fila e faturamento



  • 📦 Listas — o que são?


    Listas guardam múltiplos valores em uma única variável. Delimitadas por [], podem conter qualquer tipo de dado.


    
    # Lista de serviços da barbearia
    servicos = ["Corte", "Barba", "Corte + Barba", "Hidratação"]
    
    print(f"Serviços disponíveis: {servicos}")
    print(f"Total: {len(servicos)} serviços")
    

    ▶ Saída:

    
    Serviços disponíveis: ['Corte', 'Barba', 'Corte + Barba', 'Hidratação']
    Total: 4 serviços
    

    💡 len(): Retorna o tamanho de qualquer sequência — listas, strings, tuplas, etc.


    Acessando elementos


    Cada item tem um índice — começa em 0 (zero-indexado). Índices negativos contam do final.


    
    servicos = ["Corte", "Barba", "Corte + Barba", "Hidratação"]
    
    print(f"Primeiro: {servicos[0]}")      # Corte
    print(f"Segundo: {servicos[1]}")       # Barba
    print(f"Último: {servicos[-1]}")       # Hidratação
    print(f"Penúltimo: {servicos[-2]}")    # Corte + Barba
    
    # Slicing — fatiamento [início:fim] (fim exclusive)
    print(f"Dois primeiros: {servicos[0:2]}")
    

    ▶ Saída:

    
    Primeiro: Corte
    Segundo: Barba
    Último: Hidratação
    Penúltimo: Corte + Barba
    Dois primeiros: ['Corte', 'Barba']
    

    Métodos úteis de listas


    MétodoO que fazExemplo

    |--------|-----------|---------|

    `append(x)`Adiciona no final`servicos.append("Sobrancelha")`
    `remove(x)`Remove a primeira ocorrência`servicos.remove("Barba")`
    `pop(i)`Remove e retorna o item no índice i`servicos.pop(0)`
    `sort()`Ordena a lista (in-place)`servicos.sort()`
    `insert(i, x)`Insere x na posição i`servicos.insert(1, "Barboterapia")`

    💡 Use in para testar existência: "Corte" in servicos retorna True.




    🔄 Loop for — percorrendo listas


    O for percorre cada item automaticamente, sem precisar de índices.


    
    servicos = ["Corte", "Barba", "Corte + Barba"]
    
    for servico in servicos:
        print(f"✂️ {servico}")
    

    ▶ Saída:

    
    ✂️ Corte
    ✂️ Barba
    ✂️ Corte + Barba
    

    Exemplo real — cardápio de serviços


    
    servicos = ["Corte", "Barba", "Corte + Barba", "Hidratação"]
    precos = [70, 40, 110, 30]
    
    print("📋 Cardápio Los Michelitos")
    print("=" * 30)
    
    for i in range(len(servicos)):
        print(f"{servicos[i]:20s} R$ {precos[i]:.2f}")
    

    💡 Formatação: f"{var:20s}" alinha em 20 caracteres. f"{var:.2f}" formata com 2 casas decimais.




    🔢 range() — sequências numéricas


    range() gera sequências sem ocupar memória (é um *iterador*).


    ChamadaGeraExplicação

    |---------|------|------------|

    `range(5)`0, 1, 2, 3, 4De 0 até n-1
    `range(1, 6)`1, 2, 3, 4, 5De início até fim-1
    `range(2, 11, 2)`2, 4, 6, 8, 10Com passo (step)

    
    # Horários disponíveis (08h às 12h)
    for hora in range(8, 12):
        print(f"{hora:02d}:00 — Disponível")
    

    ▶ Saída:

    
    08:00 — Disponível
    09:00 — Disponível
    10:00 — Disponível
    11:00 — Disponível
    

    💡 Prefira for item in lista em vez de range(len(lista)). Só use range quando precisar do índice.




    ♻️ Loop while — enquanto for verdade


    O while repete enquanto a condição for True. Use quando não sabe quantas repetições serão necessárias.


    
    senha_correta = "admin123"
    tentativa = ""
    tentativas = 0
    
    while tentativa != senha_correta and tentativas < 3:
        tentativa = input("Senha do admin: ")
        tentativas += 1
    
    if tentativa == senha_correta:
        print(f"✅ Acesso liberado ({tentativas} tentativa(s))")
    else:
        print(f"❌ Acesso bloqueado após {tentativas} tentativas")
    

    ⚠️ Loop infinito: Se a condição nunca ficar False, o while roda para sempre. Sempre tenha uma saída garantida.




    🏪 Exemplo completo — sistema de fila


    
    # Simulação de fila da barbearia
    fila = ["João", "Pedro", "Lucas", "Ana"]
    
    print("🎯 Clientes na fila:")
    for i, cliente in enumerate(fila, 1):
        print(f"  {i}º — {cliente}")
    
    # Atendendo um por um
    while fila:
        atual = fila.pop(0)
        print(f"✂️ Atendendo: {atual}")
    
    print("✅ Fila vazia!")
    

    💡 enumerate() retorna índice + valor. O , 1 faz o índice começar em 1. Lista vazia é False — por isso while fila: funciona.




    🎯 Exercícios Práticos


    1️⃣ Lista de horários com turnos


    Gere horários de 08:00 às 18:00 e classifique em Manhã, Almoço ou Tarde:


    
    for h in range(8, 19):
        horario = f"{h:02d}:00"
        if h < 12:
            print(f"{horario} — 🌅 Manhã")
        elif h < 13:
            print(f"{horario} — 🍽️ Almoço")
        else:
            print(f"{horario} — 🌇 Tarde")
    

    2️⃣ Faturamento do dia


    
    precos = [150, 80, 230, 90, 70]
    total = 0
    
    for p in precos:
        total += p
    
    print(f"💰 Faturamento do dia: R$ {total:.2f}")
    print(f"👥 Média por cliente: R$ {total/len(precos):.2f}")
    print(f"📊 Total de clientes: {len(precos)}")
    

    💡 Desafio: Adicione um if para contar quantos clientes gastaram mais de R$ 100.


    3️⃣ Gerenciador de fila (desafio)


    Crie um programa com menu interativo:

    1. Comece com fila = []

    2. Loop while True com menu (1 Adicionar, 2 Atender, 3 Ver fila, 4 Sair)

    3. Use input() e if/elif para as ações


    💡 Dica AWS: No Lambda você usa for para processar lotes de eventos — registros SQS, arquivos S3, itens DynamoDB Scan.




    📚 Resumo


    ConceitoDoc Oficial

    |----------|-------------|

    `lista = [a, b, c]`[docs.python.org/3/tutorial/introduction.html#lists](https://docs.python.org/3/tutorial/introduction.html#lists)
    `lista[i]`[docs.python.org/3/tutorial/introduction.html#lists](https://docs.python.org/3/tutorial/introduction.html#lists)
    `append(x)`[docs.python.org/3/tutorial/datastructures.html](https://docs.python.org/3/tutorial/datastructures.html#more-on-lists)
    `for item in lista:`[docs.python.org/3/tutorial/controlflow.html#for-statements](https://docs.python.org/3/tutorial/controlflow.html#for-statements)
    `range(início, fim, passo)`[docs.python.org/3/library/stdtypes.html#range](https://docs.python.org/3/library/stdtypes.html#range)
    `while condição:`[docs.python.org/3/tutorial/controlflow.html#for-statements](https://docs.python.org/3/tutorial/controlflow.html#for-statements)
    `enumerate(lista)`[docs.python.org/3/library/functions.html#enumerate](https://docs.python.org/3/library/functions.html#enumerate)
    `len(lista)`[docs.python.org/3/library/functions.html#len](https://docs.python.org/3/library/functions.html#len)



    Anterior: [[Aula-P02-Condicionais]] | Próxima: [[Aula-P04-Funcoes]]