[Tutor] print question
Dick Moores
rdm at rcblue.com
Tue Oct 9 07:33:03 CEST 2007
Thanks, Kent and Ian. See below.
At 07:30 PM 10/8/2007, Kent Johnson wrote:
>> if seconds >= 60 and seconds < 3600:
>> minutes, seconds = divmod(seconds, 60)
>> elif seconds >= 3600:
>
>You don't need this conditional, just use the next two lines
>unconditionally. If seconds<3600 it will still do the right thing.
>
>> hours, seconds = divmod(seconds, 3600)
>> minutes, seconds = divmod(seconds, 60)
>> seconds = str(round(seconds,2)).split('.')
>
>You don't have to split the seconds, look at the %f formatting operator.
def secsToHMS(seconds):
"""
Convert seconds to hours:minutes:seconds, with seconds rounded
to hundredths of a second
"""
minutes, seconds = divmod(seconds, 60)
hours, minutes = divmod(minutes, 60)
return "%02d:%02d:%2.2f" % (hours, minutes, seconds)
print secsToHMS(87154.04987) --> 24:12:34.05 (what I wanted)
print secsToHMS(154.04987) --> 00:02:34.05 (what I wanted)
but
print secsToHMS(4.04987) --> 00:00:4.05 (I wanted 00:00:04.05)
I don't see how to get 00:00:04.05 using %f .
<http://www.python.org/doc/2.4.1/lib/typesseq-strings.html> is as clear as mud.
Dick
>Kent
>
>> print seconds
>> print seconds[0]
>> hundredths = seconds[1]
>> print hundredths
>> print "%02d:%02d:%02d.%02d" % (int(hours), int(minutes),
>> int(seconds[0]), int(seconds[1]))
>>secsToHMS(4789.3459876)
>>Which prints 01:19:49.35
>>Any improvements in the function to suggest?
>>Dick
>>
>>_______________________________________________
>>Tutor maillist - Tutor at python.org
>>http://mail.python.org/mailman/listinfo/tutor
>
More information about the Tutor
mailing list