Partage
  • Partager sur Facebook
  • Partager sur Twitter

Convertir une heure donnée en secondes

TP débutant

Sujet résolu
    24 septembre 2014 à 18:05:36

    Bonjour !

    Tout d'abord, une petite présentation s'impose puisque je suis nouveau sur ce site. Je suis actuellement en première année d'université en sciences et on me demande d'entrer dans des mondes merveilleux, tel celui de l'informatique et de la programmation, principalement (voir exclusivement) en Python. Aussi tôt dit, aussi tôt fait et aussi tôt arrivent les problèmes de compréhension de ce qu'on me demande, étant tout nouveau :)

    Je ne vous demande pas la solution, loin de là, juste un petit coup de pouce afin que je puisse bien intégrer les notions pour mon futur examen.

    Donc, j'ai vu très peu de Python. Les fonctions de bases, incrémenter une variable, raw_input, input, print et j'en passe.

    Voilà donc l'exercice sur lequel je bloque et où je n'arrive pas me débrouiller seul, d'où ma demande pour votre aide.

    On me demande un script qui demandera à l'utilisateur quelle sera l'heure à convertir ( heure=raw_input(" Quelle est heure est-il ? ") ) puis la rentrer sous la forme : HH:MM:SS

    Pour qu'enfin, se soit écrit : Il est HH:MM:SS, il s'est écoulé X secondes depuis minuit.

    Je dois initialiser 3 variables pour les heures, minutes et secondes. Puis les convertir en entier pour que cela soit utilisé dans les calculs des secondes.

    Je ne sais pas par où commencer.

    J'incrémente mes variables (h, min et sec) avec des valeurs fictives, mais comment les réutiliser ensuite dans mon message pour heure=raw_input("Quelle heure est-il? ")

    J'espère être assez clair, je ne manquerai pas de vous donner des nouvelles dès que j'aurai réussi !

    En vous remerciant d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      24 septembre 2014 à 18:29:06

      Salut,

      Comment l'utilisateur doit-il rentrer l'heure? Tu pourrai donner un exemple stp? La récupération des données et leur exploitation va dépendre fortement de comment elles sont entrées. Est-ce 22H12M15S ou 22h12m15s ou 221215 ou 630s ....

      -
      Edité par Olygrim 24 septembre 2014 à 18:29:32

      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        24 septembre 2014 à 18:37:07

        Un petit squelette de code pour t'aider:

        str_heure = raw_input("Quelle heure est-il (HH:MM:SS) ? ")
        
        heures, minutes, secondes = str_heure.split(":")
        
        # heures, minutes et secondes sont des chaînes de caractères (str).
        # Il faut les convertir en entiers avec int(nombre)
        
        # [...]
        
        
        # Puis on affiche dans l'ordre: "Il est", str_heure, ", il s'est écoulé", x, "secondes depuis minuit
        # avec x le nombre de secondes, que tu calcules au moment de l'affichage ou avant.
        
        print # [...]

        -
        Edité par tatrats 24 septembre 2014 à 18:41:09

        • Partager sur Facebook
        • Partager sur Twitter
          24 septembre 2014 à 18:37:31

          Salut,

          L'utilisateur (de ce que j'en ai compris) doit entrer l'heure sous forme HH:MM:SS.

          heure=raw_input("Entrez l'heure a convertir : ")
          h=10
          min=20
          sec=30
          hs=h*3600
          mins=min*60
          hint=int(hs)
          mint=int(mins)
          secint=int(sec)
          totals=hint + mint + secint
          message = " Il est : " + str(heure) + "."
          message2= "Il s'est ecoule " + str(totals) + " secondes depuis minuit."
          print(message)
          print(message2)

          Voilà ce que j'ai codé.

          Cependant, j'ai mis des valeurs fictives pour h, min et sec, mais j'aimerais que ce soit directement repris du résultat de la fonction heure.

          Mais je ne sais pas comment faire.

          • Partager sur Facebook
          • Partager sur Twitter
            24 septembre 2014 à 18:46:34

            `hs`, `mins` et `sec` sont déjà des entiers, pas besoin de les convertir. Tu peux aussi faire ton calcul directement, je pense que ce sera plus clair :

            total = h * 3600 + min * 60 + sec

            Enfin, tu peux afficher plusieurs valeurs à la fois avec print. Si tu es avec python 2 ça donne ça:

            print "Il est :", heure, "."
            print "Il s'est écoulé", total, "secondes depuis minuit."

            print convertit toutes les valeurs en str et les sépare par un espace.

            Je ne sais pas si tu as vu mon précédent post.

            -
            Edité par tatrats 24 septembre 2014 à 18:47:12

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              24 septembre 2014 à 18:47:08

              Non testé

              heure = raw_input("Entrez l'heure a convertir : ")
              h, m, s = map(int, heure.split(':'))
              totals = h*3600 + m*60 + s
              message = "Il est : " + heure + "."
              message2= "Il s'est ecoule " + str(totals) + " secondes depuis minuit."
              print message
              print message2
              

              Pour savoir à quoi servent certaines fonctionnalités, google est là

              -
              Edité par Anonyme 24 septembre 2014 à 18:48:54

              • Partager sur Facebook
              • Partager sur Twitter
                24 septembre 2014 à 18:49:01

                @oldprogrammer

                évite d'utiliser map() , je te rappelle qu'il commence à peine le python.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  24 septembre 2014 à 18:51:30

                  Oui mais il est en université, c'est un étudiant, et ça cherche un étudiant... rien ne l'empêche de trouver une autre solution.

                  Enlève lui split et demande lui de recréer la fonction aussi, c'est un débutant

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 septembre 2014 à 18:58:22

                    oldProgrammer a écrit:

                    Oui mais il est en université, c'est un étudiant, et ça cherche un étudiant... rien ne l'empêche de trouver une autre solution.

                    Enlève lui split et demande lui de recréer la fonction aussi, c'est un débutant


                    Merci de vos réponses.

                    Pour te répondre oldProgrammer, en effet, un étudiant ça cherche. Seulement lorsqu'on me demande de le faire via une donnée précise, je ne m'écarte pas de celle-ci, cela m'évitera de perdre des points. (Comme lorsqu'on me demande de résoudre une équation via une certaine méthode).

                    Enfin, je suis encore à la recherche ! Merci déjà de vos réponses rapides!

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      24 septembre 2014 à 19:13:35

                      J'applique exactement l'algorithme cité ci-dessus, c'est juste la façon de parler qui change, une syntaxe ne devrait jamais être imposée, surtout pas si on utilise un langage comme python, dont les fonctions pour se simplifier la vie sont ses réels points forts.

                      Quand je dis un étudiant cherche, c'est qu'un professeur devrait vous laissez libre avec la documentation de faire vos propres recherches.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 septembre 2014 à 19:25:24

                        Je pense que la syntaxe est surtout demandée au début, pour simplement nous apprendre les bases et à réfléchir d'une manière différente dont on a l'habitude (peu de monde a fait de l'informatique dans ma classe). Après, on aura du bagage en suffisance pour profiter pleinement des fonctions de Python.

                        Sinon j'aurai résolu de la manière à ce que Python demande d'abord l'heure, ensuite les minutes puis les secondes. On en arrive au même point, mais c'est pas top.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 septembre 2014 à 21:22:41

                          Voilà donc le résultat final :

                          heure=raw_input("Entrez l'heure a convertir : ")
                          h, min, sec = heure.split(":")
                          totals= int(h)*3600 + int(min)*60 + int(sec)
                          print "Il est : " + str(heure) + "."
                          print "Il s'est ecoule " + str(totals) + " secondes depuis minuit."

                          Testé et ça marche :)

                          Y'aurait-il quelque chose à modifier ?

                          Merci à tous pour votre aide précieuse!

                          EDIT : Voilà ce que demandait le prof si ça vous intéresse : 

                          heure = raw_input("Entrer l'heure a convertir (HH:MM:SS) : ")
                          hs = heure[0:2]
                          mins = heure[3:5]
                          secs = heure[6:8]
                          
                          hint=int(hs)
                          minint=int(mins)
                          secint=int(secs)
                          seconds=hint*3600 + minint*60 +secint
                          
                          print("Il est " + heure + ". \n Il s'est ecoule " + str(seconds) + " secondes depuis minuit. "
                          )
                          



                          -
                          Edité par LtodaX 1 octobre 2014 à 8:19:14

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            24 septembre 2014 à 21:29:42

                            Non c'est tout à fait l'algorithme que j'ai proposé tout à l'heure... on voit que map remplace les multiples utilisations de la fonction int dans ta ligne 3. Tu sais donc son intérêt sans même l'utiliser, une connaissance supplémentaire dans la boîte à neurones.

                            EDIT: On peut virer le str dans ligne 4

                            -
                            Edité par Anonyme 24 septembre 2014 à 21:31:26

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Convertir une heure donnée en secondes

                            × 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