Contagem regressiva: Escreva um programa que peça um número inteiro positivo e faça uma contagem regressiva até zero, imprimindo cada número.
Passo 1
O enunciado pede que escrevamos um programa que:
- peça ao usuário um número inteiro positivo (vou chamar esse número de
); - faça uma contagem regressiva de
até , imprimindo cada número um por linha.
Informações relevantes que o enunciado dá:
- entrada: um inteiro positivo
(ou seja, ); - saída: os números
, cada um em sua própria linha.
Passo 2
Escolha da abordagem simples e prática (sem mistério):
- vamos usar a linguagem Python porque é bem legível e muito usada em provas e exercícios introdutórios;
- o programa precisa:
- ler uma entrada do usuário (que vem como texto);
- converter essa entrada para inteiro;
- verificar que o inteiro é não-negativo (
); - repetir a impressão dos números de
até .
Passo 3
Como ler a entrada e converter para inteiro — explicando cada peça:
- em Python, a função
input()lê uma linha digitada pelo usuário e retorna uma string (texto). - para transformar esse texto num inteiro usamos
int(...). Por exemplo, se o usuário digitar"5",int("5")vira o número inteiro. - porém, se o usuário digitar algo que não é um número (por exemplo
"abc"),int(...)gera um erro do tipoValueError. Para lidar com isso de forma amigável, a gente pode usartry/exceptpara capturar o erro e pedir a entrada de novo.
Exemplo de ideia:
- pedir a entrada com
input("Digite um inteiro positivo: "); - tentar converter com
int(...); - se der erro, avisar e pedir novamente.
Passo 4
Como garantir que o inteiro é não-negativo (
):
- após converter para inteiro, checar
if n >= 0:. - se não for, mostrar uma mensagem tipo “Digite um inteiro não-negativo” e pedir outra vez.
- repetimos esse processo até o usuário fornecer um inteiro válido. Em Python isso é feito com um
while True:que sóbreakquando a entrada estiver correta.
Passo 5
Como fazer a contagem regressiva em si — duas formas e por que escolhi uma:
- forma com
forusandorange: em Python,range(start, stop, step)gera uma sequência que começa emstart, vai até o primeiro valor estritamente maior/menor questop(dependendo do sinal destep) e pula destepemstep.- Para ir de
até incluindo , usamos range(n, -1, -1). Aqui:start = n(começa em); stop = -1(orangepara antes de atingir-1, então inclui o0);step = -1(vai decrescendo de um em um).
- Exemplo: se
, range(5,-1,-1)gera 5, 4, 3, 2, 1, 0.
- Para ir de
- forma com
while: também é possível comwhile n >= 0: print(n); n -= 1. É igualmente válida. - Vou usar
forcomrange(n, -1, -1)porque é concisa e clara.
Passo 6
Explicando a impressão de cada número:
- em Python,
print(i)escreve o valor deiseguido de uma nova linha, então cada número sairá em sua própria linha, exatamente como o enunciado pede. - não precisamos fazer nada extra para quebrar linha —
printjá faz isso por padrão.
Passo 7
Programa completo com validação de entrada e contagem regressiva:
- o código abaixo lê repetidamente até receber um inteiro não-negativo e então imprime a contagem regressiva de
até . - exemplo de execução mental: se o usuário digitar
, o programa imprimirá
3
2
1
0
Resposta
while True:
try:
n = int(input("Digite um inteiro positivo: "))
if n >= 0:
break
else:
print("Por favor, digite um inteiro não-negativo.")
except ValueError:
print("Entrada inválida. Digite um número inteiro.")
for i in range(n, -1, -1):
print(i)