edubun
Português

Tomando decisões com if

O Python verifica o if e cada elif de cima para baixo e executa só o primeiro ramo cuja condição é True; os demais são pulados.

Um preço de ingresso que depende da idade

Eis um problema para tentar antes de qualquer sintaxe nova. Um pequeno museu de ciências (inventado para este exemplo) não cobra nada de crianças com menos de 7 anos, cobra 3000 won de quem tem de 7 a 18 anos e 5000 won de todos os outros. Dada uma idade, o programa deve imprimir o preço. Escreva primeiro a regra em palavras simples, como uma lista de perguntas na ordem em que você as faria no guichê.

Você provavelmente escreveu algo assim: o visitante tem menos de 7 anos? Se sim, é grátis, e pare. Se não, tem 18 ou menos? Se sim, 3000 won, e pare. Caso contrário, 5000 won. Isso já é o programa. O Python escreve "se", "senão se" e "senão" como if, elif e else.

age = 12
if age < 7:
    price = 0
elif age <= 18:
    price = 3000
else:
    price = 5000
print(price)
Saída
3000

Três detalhes da sintaxe importam. Cada linha de condição termina com dois-pontos. As linhas que pertencem a um ramo são recuadas, e o tutorial do Python recomenda quatro espaços. Quando o recuo termina, o ramo termina, e por isso print(price) roda qualquer que seja a idade. E só um ramo é executado: para a idade 12, a primeira condição é False, a segunda é True, então price vira 3000 e o else nem é olhado.

As comparações dão True ou False

OperadorSignificadoExemploResultado
==igual a5 == 5True
!=diferente de5 != 5False
<menor que3 < 7True
<=menor ou igual a7 <= 7True
>maior que3 > 7False
>=maior ou igual a18 >= 19False

Repare no igual duplo. Um = atribui um valor, dois == comparam. Strings também podem ser comparadas: "kimchi" == "Kimchi" é False, porque letras maiúsculas contam como caracteres diferentes.

A ordem das linhas elif muda a resposta

Como o Python para na primeira condição True, a ordem dos ramos importa. Atribuir um conceito a uma nota é o caso clássico. Verifique primeiro 90 ou mais, depois 80, depois 70. Se a verificação do 70 vier primeiro, uma nota 95 é pega por ela e recebe C, já que 95 >= 70 também é True.

Uma sequência if/elif/else é uma escada. O Python desce até uma condição ser True, executa esse ramo e salta por cima dos outros.
score = 95
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "D"
print(grade)
Saída
A

and, or e not combinam condições

and é True só quando os dois lados são True. or é True quando pelo menos um lado é. not inverte True e False. Uma condição como "entre 13 e 18" pode ser escrita age >= 13 and age <= 18 ou, na forma mais curta do Python, 13 <= age <= 18. Uma condição também pode ficar dentro de outro ramo, o que se chama aninhamento. O currículo coreano de informática do ensino fundamental cita os dois, operações lógicas e estruturas de controle aninhadas, num de seus padrões de programação.

age = 15
has_ticket = True
if 13 <= age <= 18 and has_ticket:
    print("Teen entry")
if not has_ticket or age < 7:
    print("See the desk")
else:
    print("Go in")
Saída
Teen entry
Go in
ifExecuta as linhas recuadas só quando a condição é True
elif"Senão, se": verificado apenas quando tudo acima foi False
elseExecuta quando nenhuma condição acima foi True
==Compara dois valores; = atribui
and / or / notAmbas verdadeiras / ao menos uma verdadeira / o contrário
recuoQuatro espaços que marcam quais linhas pertencem a um ramo
  1. O que isto mostra?
    x = 8
    if x > 5:
        print("big")
    else:
        print("small")
  2. O que isto mostra?
    age = 7
    if age < 7:
        print("free")
    elif age <= 18:
        print("3000")
    else:
        print("5000")
  3. O que isto mostra?
    score = 85
    if score >= 70:
        print("C")
    elif score >= 80:
        print("B")
  4. O que isto mostra?
    x = 3
    if x > 5:
        print("A")
    print("B")
    • A
      B
    • B
    • A
    • (nada)
  5. O que isto mostra?
    print(5 == 5.0, "a" == "A")
  6. O que isto mostra?
    t = 30
    print(t > 25 and t < 28)
  7. O que isto mostra?
    rain = False
    print(not rain)
  8. O que isto mostra?
    n = 14
    if n % 2 == 0:
        if n > 10:
            print("big even")
        else:
            print("small even")
    else:
        print("odd")
  9. Qual linha verifica corretamente se x é 10?
    • if x = 10:
    • if x == 10:
    • if x == 10
    • if (x = 10)
  10. Coloque as linhas em ordem para o programa imprimir "Even".
    Saída
    Even
Erros comuns
  • "if score = 90: verifica se score é 90." Um = é atribuição. O Python para com SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? Escreva if score == 90:.
  • "if answer == "yes" or "y": pega as duas respostas." O Python lê isso como (answer == "yes") or ("y"), e uma string não vazia como "y" conta como verdadeira, então a condição é sempre verdadeira. Escreva answer == "yes" or answer == "y".
  • "O recuo é só para ficar bonito." No Python, ela decide quais linhas pertencem ao ramo. Esquecê-la interrompe o programa com IndentationError: expected an indented block after 'if' statement on line 2.
Nota do professorComeçar pelo guichê funciona porque os alunos já conhecem a decisão; a única novidade é a escrita. Peça que digam a regra em voz alta, na ordem, antes de digitar. Vale executar de propósito o programa de notas com a ordem errada: ele imprime C para 85 sem nenhum erro, um primeiro gostinho de erro de lógica. Ao conferir o trabalho, teste os valores de fronteira (6, 7, 18, 19 no problema do ingresso), pois os erros de um a mais ou a menos entre < e <= se escondem ali. O currículo coreano de informática do ensino fundamental tem um padrão sobre operações lógicas e estruturas de controle aninhadas.
Pontos-chave
  • if / elif / else: só o primeiro ramo True é executado.
  • As linhas de condição terminam com :, e o ramo é recuado quatro espaços.
  • == compara; = atribui.
  • Numa sequência de elif, ponha primeiro a condição mais restrita.
  • and, or e not combinam condições.
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