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 executa o bloco enquanto:
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:
while condicao: # comandos que vรฃo repetir # enquanto a condiรงรฃo for True ...
O contador comeรงa em 1, e a cada volta a gente incrementa (soma 1). Quando passa de 5, o while para.
contador = 1 while contador <= 5: print(contador) contador = contador + 1 # ๐ nรฃo esquecer!
contador = contador + 1), a condiรงรฃo NUNCA vira False โ
e o programa roda pra sempre. O famoso loop infinito ๐.
O BugZilla AMA isso. Cuidado.
Passo a passo:
contagem.pycontador = 1while contador <= 10:print(contador) e contador += 1# conta de 1 a 10 contador = 1 while contador <= 10: print(f"Nรบmero: {contador}") contador += 1
contador += 1 รฉ a mesma coisa que
contador = contador + 1. Mais curto, mesma coisa.
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!
# conta de 10 atรฉ 1 contador = 10 while contador >= 1: print(contador) contador -= 1 print("๐ Decolar!")
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.
for item in sequencia: print(item)
for.
Se depende de uma condiรงรฃo que muda (tipo "enquanto o usuรกrio nรฃo digitar sair"), use while.
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!
range(start, stop),
o nรบmero stop NรO entra na sequรชncia.
Ele รฉ o "limite" โ chegou nele, para.
range(1, 6) gera:
# for + range = combo perfeito for numero in range(1, 6): print(numero) # imprime: 1, 2, 3, 4, 5
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).
range(1, 11) gera?
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 do 3 numero = 3 for i in range(1, 11): print(f"{numero} x {i} = {numero * i}")
print(). E se a gente quisesse de 1 a 100? Trocar o 11 por 101.
Pronto. Isso รฉ programar.
Crie tabuada_intervalo.py. Pergunte ao usuรกrio 3 coisas:
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.
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}")
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).
Erro 1: esquecer os dois pontos : no fim do while ou for.
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".
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 ๐.
contador = 1 while contador <= 5: # โ tem os dois pontos print(contador) contador += 1 # โ incrementa, sempre
while, jรก escreva o incremento na hora.
Tipo um casamento โ nรฃo deixe para depois.
Atรฉ agora cada variรกvel guardava uma coisa. E se vocรช quiser guardar todos os alunos da turma? Bora conhecer as listas.
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.
# 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:
alunos[0], nรฃo alunos[1]. ร contraintuitivo, mas รฉ assim em
quase toda linguagem de programaรงรฃo.
Duas que vocรช vai usar TODA HORA:
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']
for nome in alunos: percorre a lista inteirinha,
uma posiรงรฃo de cada vez. Sem precisar mexer com รญndices!
alunos = ["Ana", "Joรฃo", "Davi"] for nome in alunos: print(f"Olรก, {nome}!")
Crie lista_alunos.py. Comece com uma lista de 5 nomes
(ร sua escolha โ pode ser dos seus colegas reais ๐).
Depois faรงa 3 coisas:
len()).lista[0] e lista[-1]).for pra mostrar todos os nomes, um por linha, com a frase "Aluno: [nome]".for + lista. Vai por etapas โ testa cada parte separada se precisar.
Vocรช consegue!
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}")
alunos[-1] pega o รบltimo sem vocรช precisar
saber o tamanho. alunos[-2] pega o penรบltimo, e assim por diante. ร, presente do Python!
Crie lista_interativa.py. Esse รฉ o exercรญcio cumulativo do capรญtulo โ
vocรช vai juntar tudo: while, input, lista, append, for. ๐คฏ
Comportamento esperado:
nomes = [].while True: pra repetir atรฉ o usuรกrio digitar "sair".input()."sair", use break pra parar o loop.append o nome na lista.for.
๐ Conceito novo: break faz o loop parar imediatamente,
mesmo que a condiรงรฃo ainda fosse True.
# 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}")
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.
frutas = ["maรงรฃ", "banana", "uva"], qual comando imprime "banana"?
len(["a", "b", "c", "d"]) retorna?
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. ๐
[1, 2, 3] โ vรกrios valores em uma sรณ variรกvel
lista[0] รฉ o primeiro
: e loop infinito โ clรกssicos
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 โ