⬅ Voltar ao Dashboard Capítulo 5 — Repetições

🔢 Contadores

Seção 5.1 — Contando ocorrências com while

📊 Números pares com if dentro do while

O poder das repetições é muito mais interessante quando combinamos while com if. Imagine imprimir apenas os números pares entre 0 e um valor digitado. Podemos usar o operador % (resto da divisão) para verificar se um número é par:

Listagem 5.7 — Pares com iffim = int(input("Digite o último número a imprimir: ")) x = 0 while x <= fim: if x % 2 == 0: print(x) x = x + 1

Note que o if dentro do bloco do while precisa de recuo adicional. O x = x + 1 é executado em toda repetição, independentemente do if.

Uma solução mais simples: em vez de verificar se é par, já avançar de 2 em 2:

Listagem 5.8 — Pares sem iffim = int(input("Digite o último número a imprimir: ")) x = 0 while x <= fim: print(x) x = x + 2

Isso mostra que existe mais de uma solução para o mesmo problema. Podemos escrever programas diferentes e obter a mesma saída.

✖ Tabuada simples

Veja um programa que imprime a tabuada de um número digitado pelo usuário:

Listagem 5.9 — Tabuada simplesn = int(input("Tabuada de: ")) x = 1 while x <= 10: print(n * x) x = x + 1

❓ Contagem de questões corretas

Contadores também são úteis dentro de condições. Vejamos um programa que corrige um teste de múltipla escolha com 3 questões. A resposta da questão 1 é "b", da 2 é "a" e da 3 é "d":

Listagem 5.10 — Contagem de questões corretaspontos = 0 questão = 1 while questão <= 3: resposta = input("Resposta da questão %d: " % questão) if questão == 1 and resposta == "b": pontos = pontos + 1 if questão == 2 and resposta == "a": pontos = pontos + 1 if questão == 3 and resposta == "d": pontos = pontos + 1 questão += 1 print("O aluno fez %d ponto(s)" % pontos)

💡 O operador += é uma abreviatura: questão += 1 é o mesmo que questão = questão + 1. Em Python, letras minúsculas e maiúsculas são diferentes: "b""B". Por isso, o programa não aceita respostas em maiúsculas.

✏ Exercícios

Exercício 5.4

Modifique a Listagem 5.8 para imprimir de 1 até o número digitado pelo usuário, mas, dessa vez, apenas os números ímpares.

Exercício 5.5

Reescreva o programa anterior para escrever os 10 primeiros múltiplos de 3.

Exercício 5.6

Altere a Listagem 5.9 para exibir os resultados no mesmo formato de uma tabuada: 2x1 = 2, 2x2 = 4, ...

Exercício 5.7

Modifique a Listagem 5.9 de forma que o usuário também digite o início e o fim da tabuada, em vez de começar com 1 e terminar com 10.

Exercício 5.8

Escreva um programa que leia dois números. Imprima o resultado da multiplicação do primeiro pelo segundo. Utilize apenas os operadores de soma e subtração para calcular o resultado. (Dica: multiplicação é uma soma repetida.)

Exercício 5.9

Escreva um programa que leia dois números. Imprima a divisão inteira do primeiro pelo segundo, assim como o resto da divisão. Utilize apenas os operadores de soma e subtração para calcular o resultado. (Dica: a divisão inteira é quantas vezes subtraimos o divisor do dividendo até ficar menor que ele.)

Exercício 5.10

Modifique o programa da Listagem 5.10 para que aceite respostas com letras maiúsculas e minúsculas em todas as questões. (Dica: use o operador or.)