Erstellen Sie einen Countdown-Timer in Python

Rayven Esplanada 11 Juli 2021
Erstellen Sie einen Countdown-Timer in Python

In diesem Tutorial wird erläutert, wie Sie einen Countdown-Timer in Python erstellen.

Der Code akzeptiert eine Eingabe, wie lange der Countdown dauern soll und startet den Countdown sofort nach der Eingabe.

Verwenden des Moduls time und der Funktion sleep() zum Erstellen eines Countdown-Timers in Python

Das Modul time ist ein allgemeines Python-Modul, das zeitbezogene Hilfsfunktionen und Variablen enthält. Die in diesem Tutorial verwendete Hauptfunktion ist die Funktion sleep(), eine asynchrone Funktion, die die Ausführung eines einzelnen Threads für n Sekunden anhält.

Wenn Ihr Programm Single-Threaded ist, was in diesem Tutorial der Fall ist, dann stoppt die Funktion sleep() die Ausführung des gesamten Programms, bis die angegebene verstrichene Zeit erreicht ist. Damit können wir zusammen mit validierten Benutzereingaben einen einfachen Countdown-Timer in Python erstellen.

Als erstes müssen Sie das Modul time importieren, um die Funktion sleep() zu verwenden.

import time

Deklarieren Sie dann eine Funktion als Countdown-Timer. Nennen wir diese Funktion countdown(). Die Funktion akzeptiert einen einzelnen Parameter: die Anzahl der Sekunden (num_of_secs), auf die der Timer herunterzählt.

Die Variable num_of_secs wird in einer Schleife kontinuierlich dekrementiert, bis sie 0 erreicht (was False bedeutet und die Schleife ohne zusätzliche Bedingung beendet).

Formatieren Sie innerhalb der Schleife die Eingangsvariable num_of_secs in das Format MM:SS und drucken Sie sie bei jeder Dekrementierung aus. Verwenden Sie dazu die eingebaute Python-Funktion divmod(), die zwei Zahlen akzeptiert und das Produkt bzw. den Rest der beiden Zahlen zurückgibt. Formatieren Sie dann das Tupelergebnis von divmod() mit der eingebauten String-Funktion format() in das MM:SS-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} formatiert das Argument in eine 2-stellige ganze Zahl (wegen des Symbols 02d). Wenn die ganze Zahl weniger als 2 Stellen hat, werden führende 0’s hinzugefügt.

Als nächstes rufen Sie bei jeder Iteration der Schleife time.sleep(1) auf, was bedeutet, dass jede Iteration um 1 Sekunde verzögert und nach Ablauf fortgesetzt wird.

Drucken Sie vor dem Aufruf der Funktion sleep() den formatierten String aus, der dem Format MM:SS des aktuellen Werts der Eingangsvariablen num_of_secs ähnelt.

Fügen Sie außerdem innerhalb der Funktion print() ein weiteres Argument mit der Eigenschaft end und dem Wert /r hinzu, was eine neue Zeile ist, um das Verhalten eines tatsächlichen Timers zu imitieren. Dieses Argument überschreibt bei jeder Ausführung der Schleife die vorherige Ausgabe von print() und überschreibt alles, bevor der Wagenrücklauf durch das Symbol /r gekennzeichnet ist.

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.")

Dekrementieren Sie anschließend die Eingabevariable min_sec_format um 1 nachdem alle vorherigen Zeilen ausgeführt wurden.

Geben Sie schließlich eine abschließende Anweisung außerhalb der Schleife aus, die angibt, dass die Ausführung des Timers abgeschlossen ist. Es schließt die Methode countdown() ab und fungiert als Countdown-Timer.

Als nächstes müssen Sie dem Benutzer die Möglichkeit geben, die Anzahl der Sekunden zum Auslösen des Countdowns einzugeben. Dazu können wir die eingebaute Funktion input() verwenden, um Benutzereingaben zu akzeptieren.

Fangen Sie die Eingabe in eine Variable ein und verwenden Sie sie als Argument für die Countdown-Funktion. Stellen Sie sicher, dass die Eingabevariable zur Validierung in int umgewandelt wird.

inp = input("Input number of seconds to countdown: ")
countdown(int(inp))

Der gesamte Code sollte so aussehen:

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)

Ausgabe:

Countdown finished.

Die endgültige Ausgabe würde Countdown Finished anzeigen, aber imitiert die Funktionsweise eines Timers und löscht jede Zeile print(), bis sie 00:00 erreicht.

Wenn Sie also 5 Sekunden eingeben, würde der Stack-Trace so aussehen:

00:05
00:04
00:03
00:02
00:01
Countdown finished.

Hier hast du es. Sie haben nun erfolgreich einen einfachen Countdown-Timer in Python erstellt, indem Sie nur eingebaute Funktionen und die Funktion sleep() aus dem Modul time verwenden.

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

Verwandter Artikel - Python Timer