๐Ÿ” ๐Ÿ“‹ โœจ
Capรญtulo 04 ยท Bootcamp programa AI

Loops e Listas

Hoje a gente ensina o computador a repetir tarefas sozinho e a guardar vรกrias coisas em uma รบnica caixinha. ร‰ a parte que faz a programaรงรฃo parecer mรกgica โ€” vocรช escreve 4 linhas e o programa faz milhares de operaรงรตes. Bora?

๐Ÿ” while โžก๏ธ for ๐Ÿ“ range() ๐Ÿ“‹ listas ๐Ÿ› BugZilla
๐Ÿงฉ
Aquecimento
Antes de codar, dois quizzes pra esquentar a cabeรงa

E se a gente quisesse mostrar de 1 a 1000 na tela?

Copiar e colar print() mil vezes? Nem pensar. Pra isso existem os loops โ€” estruturas que repetem comandos por vocรช.

1๏ธโƒฃ Pra que serve uma estrutura de repetiรงรฃo (loop)?
2๏ธโƒฃ O while executa o bloco enquanto:
๐Ÿ”
while โ€” fica fazendo enquantoโ€ฆ
A primeira estrutura de repetiรงรฃo
Pensa numa torneira pingando

Enquanto a torneira estiver aberta, ela pinga. Vocรช fecha โ†’ para de pingar. Enquanto seu celular tem bateria, ele liga. Bateria acabou โ†’ desliga. Esse "enquanto" รฉ literalmente o while em Python.

A estrutura รฉ assim:

exemplo_while.py Python
1
2
3
4
while condicao:
    # comandos que vรฃo repetir
    # enquanto a condiรงรฃo for True
    ...
๐ŸŽฌ Ele em aรงรฃo โ€” contagem de 1 a 5

O contador comeรงa em 1, e a cada volta a gente incrementa (soma 1). Quando passa de 5, o while para.

contador = 1 condiรงรฃo: contador <= 5
1
2
3
4
5
contagem_simples.py Python
1
2
3
4
contador = 1
while contador <= 5:
    print(contador)
    contador = contador + 1   # ๐Ÿ‘ˆ nรฃo esquecer!
โš ๏ธ
Cuidado supremo do while: se vocรช esquecer de aumentar o contador (a famosa linha contador = contador + 1), a condiรงรฃo NUNCA vira False โ€” e o programa roda pra sempre. O famoso loop infinito ๐ŸŒ€. O BugZilla AMA isso. Cuidado.
4.0
Bora Codar! โ€” Contagem animada
Vamos fazer juntos ยท contagem.py
๐ŸŽฏ
Desafio guiado pelo professor
Seu primeiro while na prรกtica

Passo a passo:

Crie o arquivo contagem.py
๐Ÿ“„
Crie a variรกvel contador = 1
๐Ÿ”ข
Use while contador <= 10:
๐Ÿ”
Dentro: print(contador) e contador += 1
โฌ†๏ธ
contagem.py Python
1
2
3
4
5
# conta de 1 a 10
contador = 1
while contador <= 10:
    print(f"Nรบmero: {contador}")
    contador += 1
Run ยท contagem.py
$ python contagem.py
โœจ
Atalho รบtil: contador += 1 รฉ a mesma coisa que contador = contador + 1. Mais curto, mesma coisa.
4.1
Desafio Individual โ€” contagem_regressiva.py
3โ€ฆ 2โ€ฆ 1โ€ฆ ๐Ÿš€
๐Ÿ’ช
Desafio Individual
Faรงa sozinho ยท contagem_regressiva.py
๐Ÿ’ก Dica para fazer sozinho

Crie contagem_regressiva.py. Faรงa uma contagem de 10 atรฉ 1 (de cabeรงa pra baixo!) usando while. No final, imprima "๐Ÿš€ Decolar!".

๐Ÿค” Pensa: se antes vocรช somava 1, agora vocรช precisa subtrair 1. A condiรงรฃo tambรฉm muda โ€” while contador >= 1. Lembra do exercรญcio anterior!

๐Ÿšจ
PARE! Tente sozinho primeiro. Erre, ajuste, teste de novo โ€” รฉ assim que se aprende. Quem espia antes de tentar perde a maior parte do aprendizado!
๐Ÿ‘€ Sรณ clique aqui DEPOIS de tentar โ€” Ver cรณdigo completo โ–ผ
contagem_regressiva.py Python
1
2
3
4
5
6
# conta de 10 atรฉ 1
contador = 10
while contador >= 1:
    print(contador)
    contador -= 1
print("๐Ÿš€ Decolar!")
๐Ÿš€
Reparou? A linha do "Decolar" fica fora do while โ€” ela sรณ aparece depois que o loop termina. Indentaรงรฃo importa!
โžก๏ธ
for โ€” passa em cada um da fila
Quando vocรช sabe quantas vezes vai repetir
Pensa num professor fazendo chamada

Ele tem uma lista de alunos e vai um por um: "Ana?", "Joรฃo?", "Davi?"โ€ฆ Nรฃo precisa contar nada โ€” ele sรณ percorre a fila. ร‰ isso que o for faz: percorre uma sequรชncia, item por item.

exemplo_for.py Python
1
2
for item in sequencia:
    print(item)

๐Ÿ” while

  • "Enquanto algo for verdadeโ€ฆ"
  • Vocรช controla o contador na mรฃo
  • Pode rodar 0 ou โˆž vezes
  • Cuidado com loop infinito ๐ŸŒ€

โžก๏ธ for

  • "Pra cada item da sequรชnciaโ€ฆ"
  • O Python controla pra vocรช
  • Roda exatamente N vezes (tamanho da sequรชncia)
  • Mais seguro e mais comum no dia a dia
๐Ÿ’ก
Regra prรกtica: se vocรช sabe quantas vezes vai repetir, use for. Se depende de uma condiรงรฃo que muda (tipo "enquanto o usuรกrio nรฃo digitar sair"), use while.
๐Ÿ“
range() โ€” uma rรฉgua de nรบmeros
O parceiro favorito do for
Pensa numa rรฉgua de escola

A rรฉgua tem nรบmeros marcadinhos: 1, 2, 3, 4, 5โ€ฆ O range(1, 6) รฉ literalmente isso โ€” uma rรฉgua que vai de 1 atรฉ 5. Sim, atรฉ 5, nรฃo atรฉ 6!

โš ๏ธ
O detalhe que pega todo mundo: em range(start, stop), o nรบmero stop NรƒO entra na sequรชncia. Ele รฉ o "limite" โ€” chegou nele, para.

range(1, 6) gera:

1
2
3
4
5
6
โœ… entram: 1, 2, 3, 4, 5  ยท  โŒ NรƒO entra: 6 (รฉ o limite!)
exemplo_range.py Python
1
2
3
4
# for + range = combo perfeito
for numero in range(1, 6):
    print(numero)
# imprime: 1, 2, 3, 4, 5
๐ŸŽฏ
Atalho: range(5) (sรณ com um nรบmero) tambรฉm funciona โ€” ele vai de 0 atรฉ 4 (sempre comeรงa em 0 quando vocรช nรฃo diz o inรญcio).
๐Ÿงฉ
Mini quiz โ€” vocรช pegou o range?
Pergunta rapidinha de 10 segundos
3๏ธโƒฃ Quantos nรบmeros range(1, 11) gera?
4.2
Bora Codar! โ€” Tabuada
Vamos fazer juntos ยท tabuada.py
๐ŸŽฏ
Desafio guiado pelo professor
A tabuada do 3 โ€” em 4 linhas!

Lembra de quando a gente decorava tabuada na escola? Agora o computador faz por vocรช. Vamos imprimir 3 x 1 = 3, 3 x 2 = 6, โ€ฆ atรฉ 3 x 10 = 30.

tabuada.py Python
1
2
3
4
# tabuada do 3
numero = 3
for i in range(1, 11):
    print(f"{numero} x {i} = {numero * i}")
Run ยท tabuada.py
$ python tabuada.py
๐Ÿคฏ
Olha que poder: 4 linhas de cรณdigo fizeram o trabalho que demoraria 10 print(). E se a gente quisesse de 1 a 100? Trocar o 11 por 101. Pronto. Isso รฉ programar.
4.3
Desafio Individual โ€” tabuada_intervalo.py
Tabuada com intervalo personalizado
๐Ÿ’ช
Desafio Individual
Faรงa sozinho ยท tabuada_intervalo.py
๐Ÿ’ก Dica para fazer sozinho

Crie tabuada_intervalo.py. Pergunte ao usuรกrio 3 coisas:

  1. Qual nรบmero quer ver a tabuada (ex: 7)
  2. Inรญcio do intervalo (ex: 5)
  3. Fim do intervalo (ex: 10)

Depois imprima a tabuada do nรบmero escolhido de inรญcio atรฉ fim. โš ๏ธ Atenรงรฃo: input() retorna texto โ€” converta com int()! E lembra que o range(start, stop) nรฃo inclui o stop? Soma +1 no fim pra incluir.

๐Ÿšจ
PARE! Tente sozinho primeiro. Junte input + int + for + range โ€” รฉ tudo o que vocรช jรก sabe. Tenta antes de espiar!
๐Ÿ‘€ Sรณ clique aqui DEPOIS de tentar โ€” Ver cรณdigo completo โ–ผ
tabuada_intervalo.py Python
1
2
3
4
5
6
7
numero = int(input("Qual a tabuada? "))
inicio = int(input("Inรญcio do intervalo: "))
fim    = int(input("Fim do intervalo: "))

for i in range(inicio, fim + 1):
    # o "+1" garante que o "fim" entra
    print(f"{numero} x {i} = {numero * i}")
Run ยท tabuada_intervalo.py
Qual a tabuada?
Inรญcio do intervalo:
Fim do intervalo:
๐Ÿง 
Por que fim + 1? Porque o range corta no stop. Se eu quero que o 8 apareรงa, tenho que pedir range(5, 9) โ€” que รฉ range(inicio, fim + 1).
๐Ÿ›
BugZilla apareceu de novo!
Os erros clรกssicos de loop
๐Ÿ›
Dois pesadelos do iniciante com loops
A gente sofre โ€” depois aprende. Todo mundo passa por aqui.

Erro 1: esquecer os dois pontos : no fim do while ou for.

errado.py erro
while contador <= 5   # โŒ faltou os : no final
    print(contador)
    contador += 1

O Python reclama com algo tipo: SyntaxError: expected ':'. Bom, รฉ exatamente isso โ€” esqueceu os dois pontinhos.

Erro 2: loop infinito ๐ŸŒ€ โ€” o famoso "esqueci de incrementar".

infinito.py perigo
contador = 1
while contador <= 5:
    print(contador)
    # ๐Ÿ˜ฑ esqueceu de fazer contador += 1
    # resultado: imprime "1" pra sempre ๐ŸŒ€๐ŸŒ€๐ŸŒ€

Se isso acontecer com vocรช no PyCharm, aperta o botรฃo Stop โน (quadradinho vermelho) pra matar o programa. Fica tranquilo, computador nรฃo explode ๐Ÿ˜„.

๐Ÿ‘€ Como CORRIGIR cada um โ€” clique pra ver โ–ผ
corrigido.py Python
1
2
3
4
contador = 1
while contador <= 5:    # โœ… tem os dois pontos
    print(contador)
    contador += 1             # โœ… incrementa, sempre
๐Ÿ“–
Hรกbito de ouro: sempre que escrever while, jรก escreva o incremento na hora. Tipo um casamento โ€” nรฃo deixe para depois.
๐Ÿ“‹ Parte 2 โ€” Listas

Guardando vรกrias coisas em uma caixinha sรณ

Atรฉ agora cada variรกvel guardava uma coisa. E se vocรช quiser guardar todos os alunos da turma? Bora conhecer as listas.

๐Ÿ“‹
Listas โ€” uma prateleira numerada
Vรกrios valores, uma sรณ variรกvel
Pensa numa prateleira numerada

Cada posiรงรฃo da prateleira tem um nรบmero fixo: 0, 1, 2, 3โ€ฆ (sim, comeรงa em zero, programador รฉ assim ๐Ÿ˜…). Em cada posiรงรฃo vocรช guarda uma coisa. Pra pegar uma coisa especรญfica, vocรช aponta para o nรบmero da posiรงรฃo.

primeira_lista.py Python
1
2
3
4
5
# minha primeira lista
alunos = ["Ana", "Joรฃo", "Davi", "Maria", "Lia"]

print(alunos[0])   # Ana   โ€” primeira posiรงรฃo
print(alunos[2])   # Davi  โ€” terceira posiรงรฃo

Visualmente:

0
"Ana"
1
"Joรฃo"
2
"Davi"
3
"Maria"
4
"Lia"
โš ๏ธ
Cuidado: รญndice comeรงa em 0! O "primeiro" da lista รฉ alunos[0], nรฃo alunos[1]. ร‰ contraintuitivo, mas รฉ assim em quase toda linguagem de programaรงรฃo.
๐Ÿ›  Funรงรตes essenciais de lista

Duas que vocรช vai usar TODA HORA:

funcoes_lista.py Python
1
2
3
4
5
6
7
alunos = ["Ana", "Joรฃo", "Davi"]

print(len(alunos))      # 3 โ€” tamanho da lista

alunos.append("Pedro")  # adiciona no FIM
print(alunos)
# ['Ana', 'Joรฃo', 'Davi', 'Pedro']
๐Ÿ”
Combo perfeito: for nome in alunos: percorre a lista inteirinha, uma posiรงรฃo de cada vez. Sem precisar mexer com รญndices!
for_lista.py Python
1
2
3
4
alunos = ["Ana", "Joรฃo", "Davi"]

for nome in alunos:
    print(f"Olรก, {nome}!")
4.4
Desafio Individual โ€” lista_alunos.py
Sua primeira lista na prรกtica
๐Ÿ’ช
Desafio Individual
Faรงa sozinho ยท lista_alunos.py
๐Ÿ’ก Dica para fazer sozinho

Crie lista_alunos.py. Comece com uma lista de 5 nomes (ร  sua escolha โ€” pode ser dos seus colegas reais ๐Ÿ˜„).

Depois faรงa 3 coisas:

  1. Imprima quantos alunos tรชm na lista (use len()).
  2. Imprima o primeiro e o รบltimo da lista (dica: lista[0] e lista[-1]).
  3. Use for pra mostrar todos os nomes, um por linha, com a frase "Aluno: [nome]".
๐Ÿšจ
PARE! Tente sozinho primeiro. ร‰ a primeira vez que vocรช junta for + lista. Vai por etapas โ€” testa cada parte separada se precisar. Vocรช consegue!
๐Ÿ‘€ Sรณ clique aqui DEPOIS de tentar โ€” Ver cรณdigo completo โ–ผ
lista_alunos.py Python
1
2
3
4
5
6
7
8
alunos = ["Ana", "Joรฃo", "Davi", "Maria", "Lia"]

print(f"Total de alunos: {len(alunos)}")
print(f"Primeiro: {alunos[0]}")
print(f"รšltimo: {alunos[-1]}")

for nome in alunos:
    print(f"Aluno: {nome}")
๐Ÿค“
Bรดnus: alunos[-1] pega o รบltimo sem vocรช precisar saber o tamanho. alunos[-2] pega o penรบltimo, e assim por diante. ร“, presente do Python!
4.5
Desafio Final โ€” lista_interativa.py
while + lista + input no mesmo programa ๐Ÿ”ฅ
๐Ÿ†
Desafio Individual โ€” Climax do capรญtulo
Faรงa sozinho ยท lista_interativa.py
๐Ÿ’ก Dica para fazer sozinho

Crie lista_interativa.py. Esse รฉ o exercรญcio cumulativo do capรญtulo โ€” vocรช vai juntar tudo: while, input, lista, append, for. ๐Ÿคฏ

Comportamento esperado:

  1. Comece com uma lista vazia: nomes = [].
  2. Use while True: pra repetir atรฉ o usuรกrio digitar "sair".
  3. A cada volta, peรงa um nome com input().
  4. Se o nome for "sair", use break pra parar o loop.
  5. Senรฃo, append o nome na lista.
  6. Quando sair do loop, mostre a lista final com um for.

๐Ÿ†• Conceito novo: break faz o loop parar imediatamente, mesmo que a condiรงรฃo ainda fosse True.

๐Ÿšจ
PARE! Esse รฉ o desafio mais legal do capรญtulo. Tenta de verdade โ€” pode dar erro, pode ficar 10 minutos quebrando a cabeรงa, e tรก รณtimo. ร‰ aรญ que o cรฉrebro aprende. ๐Ÿ’ช
๐Ÿ‘€ Sรณ clique aqui DEPOIS de tentar โ€” Ver cรณdigo completo โ–ผ
lista_interativa.py Python
1
2
3
4
5
6
7
8
9
10
11
12
# lista vazia pra comeรงar
nomes = []

while True:
    nome = input("Digite um nome (ou 'sair' pra terminar): ")
    if nome == "sair":
        break             # ๐Ÿ‘‹ sai do while
    nomes.append(nome)

print("\n--- Lista final ---")
for n in nomes:
    print(f"โ€ข {n}")
Run ยท lista_interativa.py
Digite um nome (ou 'sair' pra terminar):
Digite um nome (ou 'sair' pra terminar):
Digite um nome (ou 'sair' pra terminar):
Digite um nome (ou 'sair' pra terminar):
๐ŸŽฏ
Sacou o poder? Esse padrรฃo (while True + break + lista) รฉ a base de quase todo sistema de cadastro do mundo โ€” desde um app de receitas atรฉ o Instagram. Vocรช acabou de aprender algo profissional.
๐Ÿงฉ
Quiz โ€” fixando listas
Duas perguntas pra ver se grudou
4๏ธโƒฃ Dada a lista frutas = ["maรงรฃ", "banana", "uva"], qual comando imprime "banana"?
5๏ธโƒฃ O que len(["a", "b", "c", "d"]) retorna?
๐ŸŒŸ
Desafio extra โ€” pra quem quer mais
Sistema completo prรกtico lรก fora
๐Ÿš€

Mini-projeto extra โ€” Desafio 01

Sistema completo pra vocรช praticar tudo que viu atรฉ aqui (variรกveis, condicionais, loops, listas). Acessa, lรช o enunciado e tenta resolver. ร‰ opcional, mas quem faz, decola. ๐Ÿš€

Abrir desafio โ†’
โœ…
Resumo do Capรญtulo 04
Tudo que vocรช acabou de dominar
๐Ÿ” while Repete enquanto a condiรงรฃo for True (cuidado com o incremento!)
โžก๏ธ for Percorre cada item de uma sequรชncia
๐Ÿ“ range(start, stop) Gera nรบmeros de start atรฉ stopโˆ’1 (stop NรƒO entra)
๐Ÿ“‹ listas [1, 2, 3] โ€” vรกrios valores em uma sรณ variรกvel
0๏ธโƒฃ รญndices Comeรงam em 0! lista[0] รฉ o primeiro
๐Ÿ“ len() Quantos itens tem a lista
โž• append() Adiciona um item no fim da lista
โ›” break Sai de um loop antes da hora
๐Ÿ› BugZilla Esquecer : e loop infinito โ€” clรกssicos

"Vocรช ensinou o computador a repetir e a guardar coisas.
Agora ele faz mil tarefas pra vocรช sem cansar โ€” bem-vindo ao mundo real do cรณdigo!" ๐Ÿš€

Prรณximo capรญtulo โ†’

Capรญtulo 05 โ€” Funรงรตes. Vocรช jรก consegue repetir cรณdigo com loops. Mas e quando o mesmo cรณdigo aparece em vรกrios lugares do programa? Funรงรตes resolvem isso โ€” vocรช escreve UMA vez, usa MUITAS. Bora?

๐Ÿ›  Ir para Capรญtulo 05 โ†’

ou โ† voltar ao hub