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