2016-12-29 15 views
0

Итак, я написал код python, который преобразует секунды в часовые минуты и секунды, но код не выглядит аккуратным. Что было бы лучшим способом сделать то, что делает мой сценарий?Есть ли более простой способ сделать это?

from fractions import Fraction as Frac 
from decimal import Decimal as Deci 

def Hrs(mins,hr=[],deci=[],hrs=True): 
    return(Seperator(mins/60)) 

def Seperator(Decimal,num=[],deci=[],nums=True): 
    del num[:],deci[:] 
    for item in str(Decimal): 
    if item == '.': 
    deci.append(item) 
    nums = False 
    continue 
    num.append(item)if nums else deci.append(item) 
    return''.join(num),''.join(deci) 

def Mins(secs): 
    t = Deci(float(Frac(secs,60))) 
    return t 

def Secs(deci): 
    r = Deci(float(deci*60)) 
    return r 

def Clean(decimal,deci=[],p=True): 
    del deci[:] 
    for item in str(decimal): 
    if item == '.': 
    if p:deci.append(item);p=False;continue 
    else: break 
    deci.append(item) 
    return float(''.join(deci)) 

if __name__ == '__main__': 
    Seconds = 6033 
    Hours = Hrs(Mins(Seconds))[0] 
    Minutes = int(Secs(Clean(Hrs(Mins(Seconds))[1]))) 
    Seconds = int(eval(Seperator(Secs(Clean(Hrs(Mins(Seconds))[1])))[1])*60) 
    print '{}:{}:{}'.format(Hours,Minutes,Seconds) 

ответ

2

Абсолютно. Здесь вы идете:

def convert(total): 
    secs = total%60 
    total /= 60 
    minutes = total%60 
    total /= 60 
    hours = total%24 
    days = total/24 
    return (days, hours, minutes, secs) 

convert(13246345) 

Выход: (153, 7, 32, 25)

0

Это должно сделать трюк

import time 

localtime = time.localtime() 
timeString = time.strftime("%Y%m%d%H%M%S", localtime) 

timeString = time.strftime("%H:%M:%S") 
print timeString 
Смежные вопросы