Repetindo com for e while
range(5) produz 0, 1, 2, 3 e 4: cinco números, e o 5 não está entre eles.
Execute um laço de três linhas e veja o total crescer
Copie este programa para o IDLE e execute-o antes de ler a explicação. Depois troque a lista por números seus e execute de novo.
total = 0
for n in [3, 5, 2]:
total = total + n
print(n, total)
print("done", total)3 3
5 8
2 10
done 10A linha for pega os itens da lista um de cada vez. A cada volta, a variável n se refere ao próximo item, e as linhas recuadas abaixo são executadas uma vez com esse valor. Uma passagem pelas linhas recuadas se chama iteração. Depois do último item, o Python segue para a primeira linha que não está recuada, então "done" é impresso uma vez, no final. Uma tabela de rastreamento deixa o padrão claro.
| Passagem | n | total depois da passagem | Impresso |
|---|---|---|---|
| (antes) | 0 | ||
| 1 | 3 | 3 | 3 3 |
| 2 | 5 | 8 | 5 8 |
| 3 | 2 | 10 | 2 10 |
| (depois) | 10 | done 10 |
A variável total se chama acumulador: começa em 0 antes do laço e junta algo a cada passagem. A linha total = total + n é tão comum que o Python tem uma forma curta, total += n. Contar funciona do mesmo jeito com count += 1.
range() faz os números para você
Para repetir algo um número fixo de vezes, percorra um range(). range(5) dá 0, 1, 2, 3, 4: começa em 0 e para antes do 5, como um fatiamento. range(1, 6) dá de 1 a 5. Um terceiro número define o passo, então range(0, 10, 2) dá os pares de 0 a 8. A tabuada do 7, que todo aluno coreano recita no segundo ano, é um laço de duas linhas.
for i in range(1, 10):
print(7, "x", i, "=", 7 * i)7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63Um laço for também pode percorrer os caracteres de uma string, o que facilita contar letras.
count = 0
for ch in "banana":
if ch == "a":
count += 1
print(count)3while repete enquanto uma condição continua True
Um laço while não tem uma lista para percorrer. Ele verifica uma condição, executa as linhas recuadas se ela for True e verifica de novo, repetidamente. Serve para tarefas em que você não sabe de antemão o número de passagens, como "continue guardando até o total chegar a 50 000 won". Algo dentro do laço precisa mudar a condição, senão o laço nunca termina. Se isso acontecer, pare o programa com Ctrl+C.
saved = 0
weeks = 0
while saved < 50000:
saved += 12000
weeks += 1
print(weeks, saved)5 60000break sai do laço na hora, mesmo no meio. É útil quando você está procurando e pode parar assim que achar o que quer. O laço abaixo para na primeira nota abaixo de 60 e nunca olha o 88.
for s in [72, 91, 55, 88]:
if s < 60:
print("first below 60:", s)
break
print("ok", s)ok 72
ok 91
first below 60: 55| for x in ... | Executa as linhas recuadas uma vez para cada item |
| range(a, b) | Números inteiros de a até b, sem incluí-lo |
| while | Repete enquanto a condição for True |
| acumulador | Uma variável que junta um total ao longo das passagens |
| += | total += n é a forma curta de total = total + n |
| break | Sai do laço imediatamente |
- O que isto mostra?
for i in range(3): print(i)0
1
21
2
30
1
2
33
- O que isto mostra?
total = 0 for n in range(1, 5): total += n print(total) - O que isto mostra?
print(list(range(0, 10, 3))) - O que isto mostra?
total = 0 for n in [1, 2, 3]: total += n print(total)61
3
61
2
30
1
3
- O que isto mostra?
count = 0 for ch in "seoul": if ch in "aeiou": count += 1 print(count) - O que isto mostra?
n = 1 while n < 20: n = n * 2 print(n) - O que isto mostra?
for s in [5, 8, 3, 9]: if s > 6: print(s) break - Quantas vezes isto imprime hi?
for i in range(2, 8): print("hi") - O que isto mostra?
word = "" for ch in "abc": word = ch + word print(word) - Coloque as linhas em ordem para o programa imprimir a soma de 1 a 100.Saída
5050
- "range(1, 10) vai até 10." Ele para antes do 10, então o último valor é 9. Para ir de 1 a 10, escreva range(1, 11).
- "Meu laço while está certo; só demora muito." Se nada dentro do laço muda a condição, ele nunca para. Confira se a variável da condição é atualizada a cada passagem e aperte Ctrl+C para parar um laço fora de controle.
- "Pôr o print dentro ou fora do laço não faz diferença." Recuado sob o for, ele roda a cada passagem; na margem esquerda, roda uma vez depois do laço. Decida se você quer cada etapa ou só a resposta final.
- for x in list: executa as linhas recuadas uma vez por item.
- range(a, b) para antes de b; range(n) vai de 0 a n - 1.
- Um acumulador começa antes do laço e cresce dentro dele.
- while repete enquanto uma condição for True; algo precisa mudá-la.
- break sai do laço na hora.
Fontes deste curso (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Data de verificação: 2026-10-19