edubun
Português

Números e aritmética

No Python 3, 7 / 2 dá 3.5, 7 // 2 dá 3 e 7 % 2 dá o resto 1.

Quatro divisões para prever antes de continuar

Cubra a saída abaixo e anote o que você espera que cada linha imprima. A maioria das pessoas acerta a primeira e erra pelo menos uma das outras, e é desse erro que esta unidade parte.

print(7 / 2)
print(8 / 2)
print(7 // 2)
print(7 % 2)
Saída
3.5
4.0
3
1

A segunda linha surpreende. 8 / 2 é exatamente 4, mas o Python imprime 4.0. O motivo é que / sempre dá um float, um número com ponto decimal, mesmo quando a divisão é exata. Se você quer a divisão inteira, o Python tem outro operador, //, a divisão inteira com arredondamento para baixo. Ela divide e depois arredonda para o número inteiro abaixo. O operador parceiro % dá o resto que sobra. Juntos, respondem à pergunta do ensino fundamental: "7 dividido por 2 é 3, resto 1".

Cabem três saltos de 2 em 7, e sobra 1: 7 // 2 é o número de saltos, 7 % 2 é o que sobra.

O % aparece em mais lugares do que se espera. Um número é par quando n % 2 é 0. O último dígito de um número é n % 10. Transformar 135 minutos em horas e minutos é 135 // 60 horas e 135 % 60 minutos.

minutes = 135
print(minutes // 60, "h", minutes % 60, "min")
print(2026 % 2, 2027 % 2)
print(4589 % 10)
Saída
2 h 15 min
0 1
9

Os outros operadores e a ordem que o Python usa

OperadorSignificadoExemploResultado
+somar7 + 29
-subtrair7 - 25
*multiplicar7 * 214
/dividir (float)7 / 23.5
//divisão inteira7 // 23
%resto7 % 21
**potência7 ** 249

O Python segue a mesma ordem da aula de matemática: primeiro **, depois *, /, // e %, depois + e -, da esquerda para a direita dentro de cada grupo. Os parênteses vêm antes de tudo, então, na dúvida, use-os. Não custam nada e deixam a intenção clara para o próximo leitor.

print(2 + 3 * 4)
print((2 + 3) * 4)
print(2 ** 10)
print(10_000 * 3)
Saída
14
20
1024
30000

A última linha mostra uma pequena ajuda: o Python permite escrever sublinhados dentro de números longos, então 10_000 é mais fácil de ler que 10000. Eles são ignorados no cálculo e não aparecem na saída. Vírgulas não servem para isso, porque a vírgula já significa "próximo valor".

Os decimais são guardados em binário, então alguns resultados ficam ligeiramente diferentes do esperado

Experimente 0.1 + 0.2. O tutorial do Python dedica um capítulo inteiro ao motivo de a resposta ser 0.30000000000000004 e não 0.3. Os floats são guardados em binário, e 0.1 não tem forma binária exata, assim como 1/3 não tem forma decimal exata. O erro é minúsculo, e o round() o esconde na hora de imprimir. Saiba que o round() leva um valor exatamente na metade para o vizinho par: a página das funções embutidas dá round(0.5) como 0 e round(1.5) como 2. Para dinheiro em won inteiros ou centavos inteiros, guarde os valores como int e evite o problema por completo.

print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
print(round(0.5), round(1.5), round(2.5))
print(int(3.99), float(7))
Saída
0.30000000000000004
0.3
0 2 2
3 7.0

input() sempre devolve uma string

input() mostra um prompt, espera o usuário digitar algo e apertar Enter, e devolve o que ele digitou como string. Mesmo que digite 15, você recebe "15", um texto. Para fazer contas com isso, converta com int() ou float(). O int() aplicado a um float corta a parte decimal em vez de arredondar, então int(3.99) é 3.

age = input("How old are you? ")
next_year = int(age) + 1
print("Next year you will be", next_year)
Saída
How old are you? 14
Next year you will be 15
No exemplo acima, 14 é o que o usuário digitou. O programa em si não contém o número 14.
/Divisão que sempre dá um float: 8 / 2 é 4.0
//Divisão inteira: 7 // 2 é 3
%Resto: 7 % 2 é 1
**Potência: 2 ** 3 é 8
int()Transforma "15" ou 3.9 em um número inteiro (15, 3)
input()Lê uma linha digitada pelo usuário, como string
round(x, n)Arredonda para n casas decimais; os empates exatos vão para o vizinho par
  1. O que isto mostra?
    print(9 / 3)
  2. O que isto mostra?
    print(17 // 5, 17 % 5)
  3. O que isto mostra?
    print(2 + 3 * 4 ** 2)
  4. O que isto mostra?
    print(2 ** 3)
  5. O que isto mostra?
    print(2 ^ 3)
    • 8
    • 6
    • 1
    • Um erro
  6. O que isto mostra?
    print(int("20") + 5)
  7. O que isto mostra?
    print("20" + "5")
  8. O que isto mostra?
    print(int(7.9))
  9. O que isto mostra?
    print(round(2.5))
  10. Um pãozinho custa 3500 won e você tem 10 000 won. O que isto mostra?
    won = 10000
    price = 3500
    print(won // price, won % price)
  11. Qual expressão diz se n é par?
    • n / 2 == 0
    • n // 2 == 0
    • n % 2 == 0
    • n ** 2 == 0
Erros comuns
  • "2 ^ 3 é 8." No Python, ^ é um operador bit a bit e 2 ^ 3 é 1. As potências usam **, então 2 ** 3 é 8. O programa roda sem erro, o que torna esse engano difícil de notar.
  • "input() me dá um número se eu digitar um número." Ele sempre dá uma string. "14" + 1 para com TypeError: can only concatenate str (not "int") to str. Converta antes com int(input(...)).
  • "0.1 + 0.2 == 0.3 é True." É False, porque 0.1 + 0.2 é 0.30000000000000004. Compare valores arredondados, como round(0.1 + 0.2, 2) == 0.3, ou conte em unidades inteiras (won, centavos) com int.
Nota do professorComece pelo exercício de previsão e deixe a surpresa do 4.0 fazer o trabalho. Quem conhece a divisão com resto desde o ensino fundamental aprende // e % rápido quando eles têm esses nomes. O erro de arredondamento dos floats vale ser mostrado uma vez, sem insistir; o hábito importante é guardar dinheiro como números inteiros. round(2.5) dar 2 contradiz o arredondamento ensinado na aula de matemática, então espere uma pergunta e aponte a documentação das funções embutidas em vez de discutir. O erro de conversão do input() é o que os alunos mais encontram nos primeiros projetos.
Pontos-chave
  • / sempre dá um float; // dá o quociente inteiro; % dá o resto.
  • ** é potência; ^ não é.
  • Ordem: parênteses, **, depois * / // %, depois + -.
  • 0.1 + 0.2 é 0.30000000000000004; guarde dinheiro como int.
  • input() devolve uma string; converta com int() ou float().
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