Crie um cronômetro de contagem regressiva em Python

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.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Rayven Esplanada avatar Rayven Esplanada avatar

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

Artigo relacionado - Python Timer