Crie um cronômetro de contagem regressiva em Python

Rayven Esplanada 11 julho 2021
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.

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