Самый простой способ - обнаружить отрицательные входы, получить их абсолютные значения, а затем поставить -
перед собой, когда вы их вернете:
def timer(ms):
if ms < 0:
return "-" + timer(abs(ms))
...
У меня есть функция, которая преобразует миллисекунды в формат h: m: s.ms, и она работает.
Однако у меня есть одна проблема, и речь идет о отрицательных числах.
код
Защита таймер ( мс ):
s = мс / 1000
м , с = divmod ( с , 60 )
ч , м = divmod ( м , 60 ) # д, ч = divmod (Н, 24)
d = мс % 1000
если h > 0 : return "{0}: {1}: {2}. {3}" . format ( int ( h ), str ( int ( m )). zfill ( 2 ), str ( int ( s )). zfill ( 2 ), str ( int ( d )). zfill ( 3 )) elif m > 0 : return "{0}: {1}. {2}" . формат (
int ( m ), str ( int ( s )). zfill ( 2 ), str ( int ( d )). zfill ( 3 )) else : return "{0}. {1}" . format ( int ( s ), str ( int ( d )). zfill ( 3 ))
печать ( таймер ( 13700 ))
# возвращает 13.700, как ожидалось, py prettyprint prettyprinted ">print(timer(-13700))
-
Когда я даю отрицательные миллисекунды, например, -13700
59:46.300
он возвращается
-
но ожидаемый результат, который я хочу, составляет -13.700
Как я могу это решить?
Хорошим подходом к чистому решению этого будет:
Поэтому изменение кода будет выглядеть так:
def timer(ms):
sign = ms//abs(ms) if ms != 0 else 0 # <--- Step 1
ms = abs(ms) # <--- Step 2
s = ...
...
if sign == -1: # <--- Step 3
output = "-"+output
return output