Créer un compte à rebours en Python

Rayven Esplanada 11 juillet 2021
Créer un compte à rebours en Python

Ce tutoriel explique comment créer un compte à rebours en Python.

Le code accepte une entrée de la durée du compte à rebours et démarrera le compte à rebours immédiatement après la saisie de l’entrée.

Utilisation du module time et de la fonction sleep() pour créer un compte à rebours en Python

Le module time est un module Python général contenant des fonctions et des variables utilitaires liées au temps. La fonction principale utilisée dans ce tutoriel est la fonction sleep(), qui est une fonction asynchrone qui suspend l’exécution d’un seul thread pendant n secondes.

Si votre programme est monothread, ce qui est le cas pour ce tutoriel, alors la fonction sleep() arrêtera l’exécution de tout le programme jusqu’à ce que le temps écoulé donné soit atteint. Avec cela, avec une entrée utilisateur validée, nous pouvons créer un compte à rebours simple en Python.

La première chose à faire est d’importer le module time pour utiliser la fonction sleep().

import time

Déclarez ensuite une fonction pour agir comme le compte à rebours. Appelons cette fonction countdown(). La fonction acceptera un seul paramètre : le nombre de secondes (num_of_secs) jusqu’au décompte du timer.

La variable num_of_secs sera continuellement décrémentée dans une boucle jusqu’à ce qu’elle atteigne 0 (ce qui se traduit par False et termine la boucle sans aucune condition supplémentaire).

Dans la boucle, formatez la variable d’entrée num_of_secs au format MM:SS et imprimez-la à chaque fois qu’elle décrémente. Pour ce faire, utilisez la fonction Python intégrée divmod(), qui accepte deux nombres et renvoie respectivement le produit et le reste des deux nombres. Formatez ensuite le résultat du tuple de divmod() au format MM:SS en utilisant la fonction de chaîne intégrée 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} formate l’argument en un entier à 2 chiffres (à cause du symbole 02d). Si l’entier est inférieur à 2 chiffres, il ajoutera des 0 au début.

Ensuite, à chaque itération de la boucle, appelez time.sleep(1), ce qui signifie qu’il retarde chaque itération d'1 seconde et continuera après s’être écoulé.

Avant d’appeler la fonction sleep(), imprimez la chaîne formatée qui ressemble au format MM:SS de la valeur courante de la variable d’entrée num_of_secs.

Ajoutez également un autre argument dans la fonction print() avec la propriété end et la valeur /r, qui est une nouvelle ligne pour imiter le comportement d’une minuterie réelle. Cet argument écrase la sortie précédente print() à chaque fois que la boucle est exécutée, en écrasant tout avant que le retour chariot ne soit indiqué par le symbole /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.")

Ensuite, décrémentez la variable d’entrée min_sec_format de 1 après que toutes les lignes précédentes aient été exécutées.

Enfin, imprimez une déclaration de conclusion en dehors de la boucle qui indique que le minuteur a terminé son exécution. Il conclut la méthode countdown() et fonctionnera comme un compte à rebours.

La prochaine chose à faire est de fournir à l’utilisateur un moyen de saisir le nombre de secondes pour déclencher le compte à rebours. Pour cela, nous pouvons utiliser la fonction intégrée input() pour accepter les entrées de l’utilisateur.

Capturez l’entrée dans une variable et utilisez-la comme argument pour la fonction de compte à rebours. Assurez-vous de convertir la variable d’entrée en int pour validation.

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

L’ensemble du code devrait ressembler à ceci :

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)

Production:

Countdown finished.

La sortie finale affichera Countdown Finished, mais imitera le fonctionnement d’une minuterie et effacera chaque ligne print() jusqu’à ce qu’elle atteigne 00:00.

Donc, si vous saisissiez 5 secondes, la trace de la pile ressemblerait à ceci :

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

Voilà. Vous avez maintenant créé avec succès un compte à rebours simple en Python en utilisant uniquement des fonctions intégrées et la fonction sleep() du module 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

Article connexe - Python Timer