2016-11-17 5 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()%分割後の負の値を返すことができます。さもなければ、私は1%の後にdivisonを取得し、それは私の()の計算を混乱させます。 Duration(1000)-Duration(3000)など

マイナスのミリ秒値の場合に秒値を取得するためのより便利な方法がありますか?

+0

は0

+0

Python @SumitDhariwalで有効な構文ではありません。 –

+0

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

答えて

0

あなたのコードはどうですか? が、私はこのようにそれを行っているだろうが、あなたが同様にOKに見えます...

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