Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
HarryH
User
Beiträge: 266 Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland
Montag 8. November 2004, 10:50
Hallo,
Habe folgenden Unterschied in der Ausgabe festgestellt.
1.Beispiel:
Code: Alles auswählen
def GetHMS(s):
sec = s
h = (sec > 3599 and sec / 3600 or 0)
m = (sec - h*3600 > 59 and (sec - h*3600) / 60 or 0)
s = (sec - h*3600 - m*60 > 0 and (sec - h*3600 - m*60) or 0)
return "%02.f:%02.f:%02.f" % (h, m, s)
sec = 12376
print GetHMS(sec)
Ausgabe:
2.Beispiel:
Code: Alles auswählen
def GetHMS(s):
sec = s
h = (sec > 3599 and sec / 3600 or 0)
m = (sec - h*3600 > 59 and (sec - h*3600) / 60 or 0)
s = (sec - h*3600 - m*60 > 0 and (sec - h*3600 - m*60) or 0)
return "%02.f:%02.f:%02.f" % (h, m, s)
sec = 12376.0
print GetHMS(sec)
Ausgabe:
Warum dieser Unterschied?
Gruß, Harry
mawe
Python-Forum Veteran
Beiträge: 1209 Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])
Montag 8. November 2004, 13:58
Hi!
Code: Alles auswählen
sec = 12345
h = sec > 3599 and sec / 3600 or 0 # -> h = 3
h * 3600 # -> 10800
sec - h*3600 > 59 # True
sec = 12345.0
h = sec > 3599 and sec / 3600 or o # -> h = 3.429.....
h * 3600 # -> 12345.0 = sec !!
sec - h*3600 > 59 # -> 0, daher False
Gruß, mawe
Milan
User
Beiträge: 1078 Registriert: Mittwoch 16. Oktober 2002, 20:52
Montag 8. November 2004, 18:56
HI. Ein Tipp: Benutze divmod, damit umschiffst du das Problem elegant:
Code: Alles auswählen
def GetHMS(s):
h,s = divmod(s,3600)
m,s=divmod(s,60)
return "%02.f:%02.f:%02.f" % (h, m, s)