Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] Convertir des secondes en hh:mm:ss

5 septembre 2009 à 16:30:48

Salut,

En python, est-il possible de convertir simplement un int (nombre de secondes) au format heures/minutes/secondes ?

Merci d'avance :)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
5 septembre 2009 à 19:38:04

Oui c'est tout à fait possible :
regarde simplement si tu as du mal :
heure,minute=0,0

def decoupe(seconde):
    heure = seconde /3600
    seconde %= 3600
    minute = seconde/60
    seconde%=60
    return (heure,minute,seconde)

print decoupe(3600) #la valeur entre parenthèse est à titre d'exemple

@+
  • Partager sur Facebook
  • Partager sur Twitter
5 septembre 2009 à 23:06:36

Citation : Celestin



En python, est-il possible de convertir simplement un int (nombre de secondes) au format heures/minutes/secondes ?



La bibliothèque standard permet de le faire sans effort si ce nombre de secondes a une durée inférieure à 24 heures. Soit à convertir 4242 secondes dans le format hh mm ss :


>>> from time import *
>>> strftime('%H %M %S', gmtime(4242))
'01 10 42'
>>>



  • Partager sur Facebook
  • Partager sur Twitter
6 septembre 2009 à 10:05:02

C'est vrai que c'est on ne peut plus simple :p .
  • Partager sur Facebook
  • Partager sur Twitter
6 septembre 2009 à 12:07:19

Citation : Colb-Seton

C'est vrai que c'est on ne peut plus simple :p .



C'est ma fâcheuse tendance à chercher systématiquement à me différencier :(
Non, très franchement, ça me parait bien compliqué.

Concernant ton code, ton initialisation

heure,minute=0,0

est inutile car ces variables n'interfèrent pas avec les variables locales du même nom de ta fonction decoupe().

Sinon, concernant cette fonction, tu effectues 4 divisions alors que 2 suffisent. Même si la division est, de loin, l'opération arithmétique la plus couteuse, cela n'est absolument pas gênant. Néanmoins, lorsqu'on a besoin et du quotient, et du reste, on utilise plutôt, comme l'avait fait fred1599 dans sa première réponse, la fonction divmod() qui elle ne coûte qu'une seule division.

Ce qui donne le code suivant :

def secTohms(nb_sec):
     q,s=divmod(nb_sec,60)
     h,m=divmod(q,60)
     return "%d:%d:%d" %(h,m,s)
    
print secTohms(4242)


1:10:42

  • Partager sur Facebook
  • Partager sur Twitter
6 septembre 2009 à 12:19:40

Citation : candide

heure,minute=0,0


est inutile car ces variables n'interfèrent pas avec les variables locales du même nom de ta fonction decoupe().


Oui exact, c'est les reflexes du C ^^ .
  • Partager sur Facebook
  • Partager sur Twitter
6 septembre 2009 à 14:01:05

Citation : Colb-Seton


Oui exact, c'est les reflexes du C ^^ .



Pas de chance pour toi, en C, c'était tout aussi inutile ...
  • Partager sur Facebook
  • Partager sur Twitter
11 septembre 2009 à 11:04:43

Citation : Celestin


En python, est-il possible de convertir simplement un int (nombre de secondes) au format heures/minutes/secondes ?



Je me demande si cette question ne serait pas suggérée par l'exercice de programmation du QCM 2004 de Prologin. Pas de lien direct possible vers l'énoncé sur le site de Prologin (c'est vraiment dommage), je n'ai trouvé que ce fichier pdf : QCM 2004.

EDIT QCM 2004
  • Partager sur Facebook
  • Partager sur Twitter
10 juillet 2014 à 12:29:34

et pour faire le contraire alors c.a.d heure en minute

  • Partager sur Facebook
  • Partager sur Twitter
7 août 2018 à 18:10:26

Ecrire un programme qui affiche les 5 premiers multiples de 421. On donnera deux codes :
*un code affichant les nombres les uns en-dessous des autres,
*un code affichant les nombres les uns à côtés des autres
  • Partager sur Facebook
  • Partager sur Twitter
9 août 2018 à 0:00:50

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. 

  • Partager sur Facebook
  • Partager sur Twitter