Crie um cronômetro de contagem regressiva em Python
Este tutorial apresenta como criar um cronômetro de contagem regressiva em Python.
O código aceita uma entrada de quanto tempo a contagem regressiva deve durar e iniciará a contagem regressiva imediatamente após a entrada ser inserida.
Usando o módulo time e a função sleep() para criar um cronômetro de contagem regressiva em Python
O módulo time é um módulo Python geral contendo funções e variáveis utilitárias relacionadas ao tempo. A principal função usada neste tutorial é a função sleep(), que é uma função assíncrona que suspende a execução de uma única thread por n segundos.
Se o seu programa for de thread único, que é o caso deste tutorial, a função sleep() interromperá a execução de todo o programa até que o tempo decorrido seja atingido. Com isso, junto com a entrada do usuário validada, podemos criar um temporizador de contagem regressiva simples em Python.
A primeira coisa a fazer é importar o módulo time para usar a função sleep().
import time
Em seguida, declare uma função para atuar como cronômetro de contagem regressiva. Vamos chamar essa função de countdown(). A função aceitará um único parâmetro: o número de segundos (num_of_secs) até o qual o cronômetro contará.
A variável num_of_secs será continuamente diminuída em um loop até atingir 0 (que se traduz em False e termina o loop sem qualquer condição extra).
Dentro do loop, formate a variável de entrada num_of_secs no formato MM:SS e imprima-o sempre que diminuir. Para fazer isso, use a função Python embutida divmod(), que aceita dois números e retorna o produto e o restante dos dois números, respectivamente. Em seguida, formate o resultado da tupla de divmod() no formato MM:SS usando a função de string interna format().
def countdown(num_of_secs):
while num_of_secs:
m, s = divmod(num_of_secs, 60)
min_sec_format = "{:02d}:{:02d}".format(m, s)
{:02d} formata o argumento em um número inteiro de 2 dígitos (por causa do símbolo 02d). Se o inteiro tiver menos de 2 dígitos, ele adicionará os 0 iniciais a ele.
Em seguida, com cada iteração do loop, chame time.sleep(1), o que significa que atrasa cada iteração por 1 segundo e continuará após o decorrer.
Antes de chamar a função sleep(), imprima a string formatada que se assemelha ao formato MM:SS do valor atual da variável de entrada num_of_secs.
Além disso, adicione outro argumento dentro da função print() com a propriedade end e o valor /r, que é uma nova linha para imitar o comportamento de um temporizador real. Este argumento sobrescreve a saída print() anterior cada vez que o loop é executado, sobrescrevendo tudo antes que o retorno do carro seja denotado pelo símbolo /r.
def countdown(num_of_secs):
while num_of_secs:
m, s = divmod(num_of_secs, 60)
min_sec_format = "{:02d}:{:02d}".format(m, s)
print(min_sec_format, end="/r")
time.sleep(1)
num_of_secs -= 1
print("Countdown finished.")
Posteriormente, diminua a variável de entrada min_sec_format em 1 após todas as linhas anteriores terem sido executadas.
Finalmente, imprima uma declaração conclusiva fora do loop que denota que a execução do cronômetro terminou. Ele conclui o método countdown() e funcionará como um cronômetro de contagem regressiva.
A próxima coisa a fazer é fornecer uma maneira para o usuário inserir o número de segundos para acionar a contagem regressiva. Para isso, podemos usar a função integrada input() para aceitar a entrada do usuário.
Pegue a entrada em uma variável e use-a como um argumento para a função de contagem regressiva. Certifique-se de lançar a variável de entrada para int para validação.
inp = input("Input number of seconds to countdown: ")
countdown(int(inp))
Todo o código deve ter a seguinte aparência:
import time
def countdown(num_of_secs):
while num_of_secs:
m, s = divmod(num_of_secs, 60)
min_sec_format = "{:02d}:{:02d}".format(m, s)
print(min_sec_format, end="/r")
time.sleep(1)
num_of_secs -= 1
print("Countdown finished.")
inp = input("Input number of seconds to countdown: ")
countdown(inp)
Resultado:
Countdown finished.
A saída final exibiria Countdown Finished, mas imitará como um cronômetro funciona e limpará cada linha print() até atingir 00:00.
Portanto, se você inserir 5 segundos, o rastreamento de pilha ficará assim:
00:05
00:04
00:03
00:02
00:01
Countdown finished.
Aí está. Agora você criou com sucesso um temporizador de contagem regressiva simples em Python usando apenas funções integradas e a função sleep() do módulo time.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn