Por que % e // funcionam
Não é uma regra para decorar. É a conta de dividir que você aprendeu na escola: o // é o quociente e o % é o resto.
Nesta lição0 de 4 vistas
1345 // 10 = 134 é o quociente: quantas vezes o 10 cabe inteiro em 1345.
1345 % 10 = 5 é o resto: o que sobra depois.
Confira: 134 × 10 + 5 = 1345.
Com dinheiro fica óbvio: você tem R$ 1345 e troca em notas de R$ 10. Recebe 134 notas (o //) e sobram R$ 5 (o %).
A régua de corte
Dividir por 10, 100 e 1000Com 10, 100 ou 1000 a conta fica visual: é como passar uma tesoura no número. O // fica com o lado esquerdo e o % com o direito. Dividir por 10 corta 1 algarismo; por 100, corta 2; por 1000, corta 3.
Para pegar a centena, são dois cortes: primeiro // 100 joga fora as duas casas da direita; depois % 10 fica só com o último algarismo do que sobrou.
Embaixo de cada número, o % 10 pego naquela volta. Quando sobra um algarismo só, // 10 dá 0 e o while n > 0 para.
- 1345pega 5// 10 →
- 134pega 4// 10 →
- 13pega 3// 10 →
- 1pega 1// 10 →
- 0para
Por que o laço de dígitos termina
Cada // 10 apaga um algarismoQuando sobra um algarismo só, // 10 dá 0, e o while n > 0 para exatamente na hora certa. Rode passo a passo e acompanhe o n encolhendo e o d pegando cada algarismo, da direita para a esquerda.
n = 1345soma = 0while n > 0:d = n % 10soma = soma + dn = n // 10print(soma)
Linha 1n = 1345
a saída aparece aquiPar ou ímpar é resto por 2
O resto só pode ser 0 ou 1| n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|---|
n % 2 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Dividindo por 2, o resto só pode ser 0 ou 1. Por isso n % 2 == 0 testa se é par. O mesmo vale para qualquer divisor: n % 3 == 0 é múltiplo de 3.
Treine: quanto dá?
Pense na conta armada ou na réguaAntes de rodar, preveja
Faça de cabeça e confira.
1345 % 101345 // 101345 % 1001345 // 1001345 // 100 % 107 % 220 % 29 // 25 // 105 % 1010 % 32026 // 1000
Erros que mais aparecem na prova
6 erros/ no lugar de //
1345 / 10 dá 134.5: o número não perde o último algarismo e o laço vira bagunça. Para apagar, //.
Trocar % por //
n % 10 pega o último algarismo; n // 10 joga ele fora. Trocar os dois faz o laço somar o número errado.
Converter para texto
len(str(n)) e n[i] resolvem, mas o professor anula: o número deve ser tratado como inteiro, com % e //.
while n != 0 com número negativo
Com negativo, // arredonda para baixo e o n nunca chega a 0. Nas questões, os números são positivos: use while n > 0.
Esquecer o caso do 0
Com n = 0, o while n > 0 nem roda. Em “quantos dígitos”, o 0 tem um dígito: confira o que o enunciado pede.
Pegar a casa do meio só com //
1345 // 100 dá 13, com o milhar junto. Para ficar só com a centena, mais um % 10.