edubun
Português

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)
Saída
3 3
5 8
2 10
done 10

A 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.

Passagemntotal depois da passagemImpresso
(antes)0
1333 3
2585 8
32102 10
(depois)10done 10
Cada passagem leva o próximo item para n e o soma ao total. O total acumulado é o padrão de laço mais comum que existe.

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)
Saída
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 = 63

Um 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)
Saída
3

while 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)
Saída
5 60000

break 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)
Saída
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
whileRepete enquanto a condição for True
acumuladorUma variável que junta um total ao longo das passagens
+=total += n é a forma curta de total = total + n
breakSai do laço imediatamente
  1. O que isto mostra?
    for i in range(3):
        print(i)
    • 0
      1
      2
    • 1
      2
      3
    • 0
      1
      2
      3
    • 3
  2. O que isto mostra?
    total = 0
    for n in range(1, 5):
        total += n
    print(total)
  3. O que isto mostra?
    print(list(range(0, 10, 3)))
  4. O que isto mostra?
    total = 0
    for n in [1, 2, 3]:
        total += n
        print(total)
    • 6
    • 1
      3
      6
    • 1
      2
      3
    • 0
      1
      3
  5. O que isto mostra?
    count = 0
    for ch in "seoul":
        if ch in "aeiou":
            count += 1
    print(count)
  6. O que isto mostra?
    n = 1
    while n < 20:
        n = n * 2
    print(n)
  7. O que isto mostra?
    for s in [5, 8, 3, 9]:
        if s > 6:
            print(s)
            break
  8. Quantas vezes isto imprime hi?
    for i in range(2, 8):
        print("hi")
  9. O que isto mostra?
    word = ""
    for ch in "abc":
        word = ch + word
    print(word)
  10. Coloque as linhas em ordem para o programa imprimir a soma de 1 a 100.
    Saída
    5050
Erros comuns
  • "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.
Nota do professorDeixe os alunos executarem o laço antes de qualquer explicação e depois preencham juntos a tabela de rastreamento no quadro. A tabela é o que torna concreto o "as linhas recuadas rodam uma vez por item". Os dois lugares onde eles escorregam são o valor de parada do range() e o recuo do último print. Nos laços while, peça que apontem a linha que acabará tornando a condição False antes de apertar Run. A tabuada do 7 é uma vitória rápida para os alunos coreanos, que sabem a saída de cor e a conferem num relance.
Pontos-chave
  • 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