Olá, Marcelo. Como vai?
Sua abordagem utilizando o terceiro argumento do range() para controlar o passo (neste caso, o decremento de -2) é excelente e demonstra uma ótima visão de otimização de código.
Muitas vezes, quando estamos aprendendo laços de repetição, a primeira reação é colocar uma estrutura condicional if dentro do bloco para filtrar os números. No entanto, usar o próprio comportamento da função range(start, stop, step) é muito mais eficiente. Isso acontece porque o Python não precisa testar uma condição a cada iteração do laço, o que economiza processamento e deixa o código mais limpo, legível e elegante.
Para enriquecer ainda mais a sua ideia e trazer uma boa prática de mercado, quando trabalhamos com contagens regressivas ou temporizadores reais, podemos utilizar a biblioteca nativa time do Python. O método time.sleep(1) faz o programa pausar por 1 segundo, simulando o tempo passando de verdade no terminal.
Veja como o seu código ficaria com essa implementação:
import time
timer = 10
# O laço começa em 10, vai até 1 (o 0 é exclusivo) e decrementa de 2 em 2
for i in range(timer, 0, -2):
print(f'Faltam apenas {i} segundos - Não perca essa oportunidade!')
time.sleep(1) # Pausa de 1 segundo
print(f'A contagem continua: {i-1} segundos restantes.')
time.sleep(1) # Pausa de mais 1 segundo
print("Aproveite a promoção agora!")
- Vantagem do seu código: Evitou o uso de
if i % 2 == 0, reduzindo a complexidade visual do algoritmo. - Boa prática aplicada: O uso de nomes de variáveis claros como
timer ajuda qualquer outra pessoa que for ler o seu código a entender o propósito do laço imediatamente.
Parabéns pela sacada de usar o decremento direto no range. Pensar em soluções mais simples e diretas é um grande passo na evolução como pessoa desenvolvedora.
Espero que possa ter lhe ajudado!