Partage
  • Partager sur Facebook
  • Partager sur Twitter

Horloge un peu spéciale

Sujet résolu
    21 février 2013 à 9:35:19

    Bonjour,

    Je suis actuellement en train d'apprendre à programmer sur python mais me voilà bloqué.

    J'aimerais faire une horloge qui compte les secondes,minutes,heures,jour,mois,année qui sont passées depuis le lancement de "l'horloge"

    J'ai déjà fais les secondes,minutes,heures,jours mais me voilà bloqué par le changement de jour dans un mois et le changement de jour dans les années bissextile

    Voici ce que j'ai déjà fait :

    import time
    seconde=0
    minute=0
    heure=0
    jour=0
    while seconde<60:
        print "Day:",jour," ",heure,":",minute,":",seconde
        seconde=seconde+1
        time.sleep (1.0)
        if seconde==60:
            minute=minute+1
            seconde=0
            if minute==60:
                heure=heure+1
                minute=0
                if heure==24:
                    jour=jour+1
                    heure=0

    Je suis sous python 2.7

    Pourriez-vous, s'il vous plait, m'éclairer ?

    Merci d'avance.

                           

    -
    Edité par Mathias Clabots 21 février 2013 à 9:50:57

    • Partager sur Facebook
    • Partager sur Twitter
      22 février 2013 à 18:40:26

      Tu peux essayer :
      if (jour == 28 and mois == 2) or (jour == 30 and mois in [4, 6, 9, 11]) or (jour == 31 and mois in [1, 3, 5, 7, 8, 10, 12]):
          mois += 1
          jour = 1
          
          if mois == 12:
              mois = 1
              an += 1
      

      Seulement, ça ne gère pas les années bissextiles.

      Voilà un exemple qui le gère :

      if ((jour == 28 and mois == 2 and not (an % 400 == 0 or (an % 4 == 0 and an % 100 != 0)) or (jour == 29 and mois == 2 and (an % 400 == 0 or (an % 4 == 0 and an % 100 != 0))) or (jour == 30 and mois in [4, 6, 9, 11]) or (jour == 31 and mois in [1, 3, 5, 7, 8, 10, 12]):
          mois += 1
          jour = 1
          
          if mois == 12:
              mois = 1
              an += 1



      C'est du code vite fait, peu lisible que de plus expérimentés rectifieront sans doute, mais qui devrait fonctionner.

      Sinon, tu peux aussi regarder http://docs.python.org/3.2/library/datetime.html. (en). C'est un module qui gère des données temporelles (date et heure)

      Et ça pour le problème des années bissextiles : le tuto officiel

      -
      Edité par arthro 22 février 2013 à 19:07:49

      • Partager sur Facebook
      • Partager sur Twitter
        22 février 2013 à 22:18:56

        Bonsoir.

        Laissez Python s'occuper seul de ça avec un timedelta :

        from time import sleep as time_sleep
        from datetime import *
        
        seconde, minute, heure, jour = [0]*4
        fmt = "Day: %s heure: %s minute: %s seconde: %s"
        t0 = t = datetime.now()
        while 1:
            time_sleep (1.0)
            t += timedelta(seconds=1)
            delta = t - t0
            heure   = delta.seconds / 3600
            minute  = delta.seconds % 3600 / 60
            seconde = delta.seconds % 60
            print fmt % (delta.days, heure, minute, seconde)
            



        • Partager sur Facebook
        • Partager sur Twitter
          22 février 2013 à 22:35:20

          J'ai oublié une partie de ma réponse :

          Comme le temps exprime une durée et pas une date, les années bissextiles n'ont pas vraiment de sens.

          Un deltatime n'a donc pas d'attribut years. L'exemple de la documentation officielle du module datetime, montre qu'il faut diviser le nombre de jours par 365 pour avoir le nombre d'années.
          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2013 à 16:47:08

            Merci à vous pour votre aide ! (et sorry pour la réponse tardive ^^')
            • Partager sur Facebook
            • Partager sur Twitter
              2 mars 2013 à 0:54:55

              @Arnaud TYMEN: En fait, le timedelta ne sert à rien ici, il suffit d'un entier qui compte les secondes, ce qui allège énormément le code.

              -
              Edité par nohar 2 mars 2013 à 0:55:11

              • Partager sur Facebook
              • Partager sur Twitter
              Zeste de Savoir, le site qui en a dans le citron !

              Horloge un peu spéciale

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown