🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

[Pronto para Copiar e Colar] Vamos Criar um App de Cronômetro com Python! (Usando o módulo time)

"Por onde eu começo a programar?" "Tento ler livros, mas fico desanimado com tantos erros..."

Há apenas alguns meses, eu me sentia exatamente da mesma forma. Comecei do zero, e através de tentativa e erro com a ajuda da IA, agora consegui lançar dois websites por conta própria.

Neste artigo, meu principal objetivo é fazer com que você, como um colega iniciante, experimente a alegria de fazer algo que "funciona" da mesma perspectiva. Desta vez, usaremos o "mago do tempo" embutido no Python, o módulo `time`, para criar um aplicativo de cronômetro e alarme surpreendentemente simples.

Vamos deixar a teoria complicada para depois! Primeiro, apenas copie, cole e aproveite o momento em que seu computador se transforma em um cronômetro!

Passo 1: Experimente Primeiro! Um Programa Super Simples que Apenas Espera 3 Segundos

Ver para crer. Primeiro, vamos executar o cronômetro mais simples do mundo, que apenas pede ao computador para "esperar 3 segundos". Copie o código abaixo e execute-o em seu ambiente Python.


# O feitiço para usar a "magia do tempo"
import time

print("Iniciando o cronômetro.")

# Pausa a execução do programa por 3 segundos
time.sleep(3)

print("Passaram 3 segundos! Bom trabalho.")
        

Ao executá-lo, "Iniciando o cronômetro." deve aparecer e, após uma pequena pausa, "Passaram 3 segundos!" será exibido. É isso! Esta é a base fundamental de um cronômetro.

O que você acha? Não é muito mais fácil do que você esperava? Esta é a experiência de fazer algo "funcionar". Este pequeno sucesso é o melhor combustível para mantê-lo em sua jornada de programação.


Passo 2: Personalize! Vamos Definir os Segundos Livremente

Um cronômetro fixo de 3 segundos é legal, mas seria ótimo poder definir qualquer tempo que você queira para coisas como cozinhar ou estudar. Em seguida, vamos modificar o programa para perguntar "Quantos segundos devo esperar?" toda vez que ele for executado.

É aqui que entra o feitiço mágico `input()`, que aceita entrada de texto do usuário.


import time

# Recebe a entrada do usuário com input()
input_seconds_str = input("Em quantos segundos devo notificar? Digite um número: ")

# [PONTO IMPORTANTE!] Converta a "string" de entrada em um "inteiro"
seconds = int(input_seconds_str)

print(f"Cronômetro definido para {seconds} segundos.")

time.sleep(seconds)

print(f"Passaram {seconds} segundos! O tempo acabou!")
        

Quando você executa isso, o programa fará uma pausa e um cursor começará a piscar. Tente digitar o número de segundos desejado (por exemplo, `10`) e pressione Enter. A mensagem aparecerá após esperar o número de segundos que você inseriu.

⚠️ A Armadilha em que Todo Iniciante Cai: `input()` é Sempre uma "String"

Deixe-me compartilhar um ponto crucial onde eu tropecei no início. A regra é que qualquer coisa recebida por `input()`, mesmo que você digite um número, é tratada como uma "string".

`time.sleep()` só aceita um número de segundos. Se você tentar passar a "string" `"10"`, ele vai ficar com raiva e lançar um erro, dizendo: "Isso não é um número!".

É por isso que a linha `seconds = int(input_seconds_str)` é necessária. Este é o processo de transformar a string em um "inteiro" com o qual o computador pode trabalhar, envolvendo-a no feitiço `int()`. Essa "conversão de tipo" é um conceito fundamental e vital que aparece em todos os aspectos da programação, então, por favor, lembre-se disso!


Passo 3: Deixe Mais Bonito! Implementando uma Contagem Regressiva

Você não fica ansioso se perguntando se o cronômetro está realmente funcionando enquanto está ativo? Vamos adicionar um recurso de contagem regressiva que mostra o tempo restante para que você saiba "quantos segundos faltam".

Aqui vamos usar a magia da "repetição", o laço `for`. Também usaremos um pequeno truque para manter a exibição em uma única linha, para que apenas os números pareçam ser atualizados.


import time

seconds = 10 # Fixo em 10 segundos para clareza

# Loop de 10 até 1, decrementando de 1 em 1
for i in range(seconds, 0, -1):
    # Exibe de forma limpa com uma f-string. end="\r" é o feitiço mágico!
    print(f"Tempo restante: {i} seg", end="\r")
    
    # Espera 1 segundo
    time.sleep(1)

# Mensagem após o término da contagem regressiva
# A chave é adicionar espaços no final para limpar a linha anterior
print("O tempo acabou!               ")
        

Vá em frente e execute. Como foi? Você deve ter visto os números diminuírem `10, 9, 8...` no mesmo lugar no seu terminal. Parece um aplicativo de cronômetro de verdade, não é?


Passo 4: Finalmente Completo! Um Cronômetro Real que Toca um Alarme

Estamos no passo final. Vamos adicionar um recurso de alarme que não apenas exibe uma mensagem quando o tempo acaba, mas também o notifica com um "som" real.

Nenhuma biblioteca especial é necessária. A maioria dos computadores (e seus terminais) tem uma espécie de recurso oculto que toca um som de "bipe" quando um "caractere especial" específico é impresso. Esse caractere é `\a`.

Aqui está a versão final do código, incorporando todos os recursos até agora, além de tratamento de erros para quando o usuário insere algo diferente de um número!


# Importa o módulo time
import time

# Usa um bloco try...except para envolver o código que pode causar um erro
try:
    # Pega o tempo de espera em segundos do usuário
    input_seconds_str = input("Em quantos segundos o alarme deve tocar? Digite um número: ")
    
    # Converte a string de entrada para um inteiro (tipo int)
    seconds = int(input_seconds_str)

    print(f"Iniciando contagem regressiva de {seconds} segundos.")

    # Loop do número de segundos especificado até 1
    for i in range(seconds, 0, -1):
        # Usa uma f-string para uma exibição limpa do tempo restante
        # end="\r" faz com que a próxima impressão sobrescreva a linha atual
        print(f"Tempo restante: {i} seg  ", end="\r")
        # Espera 1 segundo
        time.sleep(1)

    # Quando o loop terminar (o tempo acabar), exibe uma mensagem
    # \a é o caractere de alerta do terminal que toca um som de sino
    print("O tempo acabou! O alarme está tocando! \a")

except ValueError:
    # Trata o caso em que uma entrada não numérica é fornecida (int() falha)
    print("Erro: Por favor, digite um número válido.")
except KeyboardInterrupt:
    # Trata o caso em que o usuário interrompe o programa com Ctrl+C
    print("\nCronômetro interrompido.")
        

Com isso, seu computador agora funciona como um aplicativo completo de cronômetro e alarme. Ele também é um pouco mais inteligente, pois exibirá corretamente uma mensagem de erro и sairá se você inserir caracteres não numéricos (como `abc`).

Nota: O som de bipe de `\a` pode não tocar dependendo do seu sistema operacional ou das configurações do terminal. Mesmo que você não ouça um som, tenha certeza de que o programa está funcionando corretamente.


Conclusão: Um Pequeno "Funcionou!" é uma Grande Força para o Futuro

Ótimo trabalho! Neste artigo, você experimentou como pode criar um aplicativo prático de cronômetro apenas combinando os recursos básicos do módulo `time` do Python.

  1. Fazer o programa esperar com `time.sleep()`
  2. Receber instruções do usuário com `input()`
  3. Converter strings em números com `int()` (Super importante!)
  4. Repetir processos com um laço `for`
  5. Deixar a exibição bonita com `print(end="\r")`
  6. Tocar um som de alarme com `\a`
  7. Preparar-se para erros com `try...except`

Cada recurso é simples por si só, mas a diversão da programação é que, ao combiná-los, você pode criar uma ferramenta que seja genuinamente útil para alguém. O pequeno sucesso que você experimentou hoje — "Funcionou com um copiar e colar!" ou "Eu consegui modificar sozinho!" — será sua maior motivação para continuar a criar coisas mais complexas e interessantes.

Sinta-se à vontade para usar este código como base para brincar com ele, como modificá-lo para aceitar entrada em minutos ou tentar construir um cronômetro Pomodoro (25 minutos de trabalho + 5 minutos de descanso)!


[Bônus] HTML para Experimentar Todo o Código Deste Artigo

Você pode copiar o código Python final apresentado neste artigo do bloco de código abaixo, salvá-lo em seu PC com um nome como `timer.py` e executá-lo a qualquer momento para experimentá-lo. Vá em frente e execute-o em seu computador!

<!-- Salve como timer.py e execute -->
# Importa o módulo time
import time

# Usa um bloco try...except para envolver o código que pode causar um erro
try:
    # Pega o tempo de espera em segundos do usuário
    input_seconds_str = input("Em quantos segundos o alarme deve tocar? Digite um número: ")
    
    # Converte a string de entrada para um inteiro (tipo int)
    seconds = int(input_seconds_str)

    print(f"Iniciando contagem regressiva de {seconds} segundos.")

    # Loop do número de segundos especificado até 1
    for i in range(seconds, 0, -1):
        # Usa uma f-string para uma exibição limpa do tempo restante
        # end="\r" faz com que a próxima impressão sobrescreva la linha atual
        print(f"Tempo restante: {i} seg  ", end="\r")
        # Espera 1 segundo
        time.sleep(1)

    # Quando o loop terminar (o tempo acabar), exibe uma mensagem
    # \a é o caractere de alerta do terminal que toca um som de sino
    print("O tempo acabou! O alarme está tocando! \a")

except ValueError:
    # Trata o caso em que uma entrada não numérica é fornecida (int() falha)
    print("Erro: Por favor, digite um número válido.")
except KeyboardInterrupt:
    # Trata o caso em que o usuário interrompe o programa com Ctrl+C
    print("\nCronômetro interrompido.")

        

Próximos Passos

Agora que você pode fazer um cronômetro, por que não tentar fazer um jogo para jogar contra o computador a seguir? Usar o módulo `random` para lidar com números aleatórios abrirá o próximo nível de diversão na programação.

➡️ Crie um Jogo Simples de Adivinhar o Número em Python (Usando random)