2016-11-17 63 views
1

經過%算子劃分後我需要得到負數。 我創建了一個新類。它以毫秒爲單位獲取進程的持續時間,並以秒,分鐘,小時和天來表示它。 如果是負值輸入,它應該表示持續時間的負值。 我做了表示秒的方法。經過%劃分後得到負數

class Duration: 
     def __init__(self, milliseconds: int): 
      self.__milliseconds = int(milliseconds) 

     def seconds(self): 
      return abs(self.__milliseconds) // 1000 % 60 * self.is_negative() 

     def is_negative(self): 
      return -1 if self.__milliseconds < 0 else 1 

功能is_negative()幫助後%師返回負值。否則,我在%divison之後得到1,並且它擾亂了我的()的計算。像Duration(1000)-Duration(3000)或等等

是否有更便利的方式獲得秒值在負毫秒值的情況下?

+0

試試這個返回self._milliseconds <0? -1:1 –

+0

這在Python @SumitDhariwal中是無效的語法。 –

+0

'math.copysign'? http://stackoverflow.com/questions/1986152/why-doesnt-python-have-a-sign-function – doctorlove

回答

0

你不喜歡你的代碼? 我會這樣做,但你的看起來也不錯...

class Duration: 
    def __init__(self, milliseconds: int): 
     self.__milliseconds = int(milliseconds) 

    def seconds(self): 
     div, mod = divmod(self.__milliseconds // 1000, 60) 
     return mod if div >= 0 else mod-60