> > > Thanks! > > So now I have > > def secsToHMS(seconds): > """ > Convert seconds to hours:minutes:seconds, with seconds rounded > to hundredths of a second, and print > """ > hours, minutes = 0, 0 > if seconds >= 60 and seconds < 3600: > minutes, seconds = divmod(seconds, 60) > elif seconds >= 3600: > hours, seconds = divmod(seconds, 3600) > minutes, seconds = divmod(seconds, 60) > seconds = str(round(seconds,2)).split('.') > 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?
Don't need that conditional. Try this: minutes, seconds = divmod(seconds, 60) hours, minutes = divmod(minutes, 60) and you don't need the 'hundredths"... hours and minutes are already integers (you don't need to convert them to int in your string formatting) and seconds is a float. (if you supplied a float to the function) Try %f for formatting a float. With these changes you could get your function down to 3 or 4 lines of code. Also, it is generally better form to return a value than to have the function do the printing, then you could print the result like this: print secsToHMS(4789.3459876) Ian
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor