2017-07-08 14 views
0

私はオブジェクト指向の概念が新しく、オブジェクト指向の技術を使ってこの問題を解決しようとしました。私はそれを通常のプログラミング技術を使って解決しましたが、オブジェクト指向のテクニックで動作することはできません。ここPython OO、クラス内の他の関数を呼び出していますか?

は問題です: https://www.hackerrank.com/challenges/30-nested-logic?utm_campaign=30_days_of_code_continuous&utm_medium=email&utm_source=daily_reminder

私が試したもの:最初、私だけ呼ばstudent1.printで を()。それで私はparseDate()とcalculateFine()を呼び出しました。 私は自分の学生クラスのすべての変数に自己を入れています。自分がなぜ、どのように自己が働くのかを本当に理解できていないからです。

私はタイトルに間違ったラベルを付けると謝罪しますが、私のコードで何が問題なのかがわからないため、他に何を書いているのかわかりません。

class getFine(): 
    def __init__ (self,expectedDate,actualDate): 
     self.expectedDate = expectedDate 
     self.actualDate = actualDate 


    def parseDates(self): 
     self.ya = self.actualDate[0] 
     self.ma = self.actualDate[1] 
     self.da = self.actualDate[0] 

     self.ye = self.expectedDate[0] 
     self.me = self.expectedDate[1] 
     self.de = self.expectedDate[2] 

    def calculateFine(self): 
     self.fine = 0 
     if(self.ya>self.ye): 
      self.fine = 10000 
     elif self.ya==self.ye: 
      if(self.ma>self.me): 
       self.fine = 500 * (self.ma-self.me) 
      elif(self.ma==self.me) and (self.da>self.de): 
       self.fine = 15 * (self.da-self.de) 


    def print(self): 
     print(self.fine) 


def main(): 
    expectedDate = str(input().split(" ")) 
    actualDate = str(input().split(" ")) 
    student1 = getFine(expectedDate, actualDate) 
    student1.parseDates() 
    student1.calculateFine() 
    student1.print() 

if __name__ == "__main__": 
    main() 

答えて

0

あなたの日付は文字列なので、お互いから差し引いてください。

expectedDate = [int(i) for i in (input().split(" "))] 
actualDate = [int(i) for i in (input().split(" "))] 

これで問題は解決しますか?あなただけgetFine.print()機能ではなく、他のfuntionsを呼び出したい場合は


、あなたはgetFine.print()方法でこれらのクラスのメソッドを呼び出すことができます。あなたはおそらく、すべての関数呼び出しに年の月と日を分けたいので、あなたはinitメソッド

class getFine(): 
    def __init__ (self,expectedDate,actualDate): 
     self.expectedDate = expectedDate 
     self.actualDate = actualDate 

     self.ya = self.actualDate[0] 
     self.ma = self.actualDate[1] 
     self.da = self.actualDate[2] # typo here 0 --> 2 

     self.ye = self.expectedDate[0] 
     self.me = self.expectedDate[1] 
     self.de = self.expectedDate[2] 


    def calculateFine(self): 
     self.fine = 0 
     if(self.ya>self.ye): 
      self.fine = 10000 
     elif self.ya==self.ye: 
      if(self.ma>self.me): 
       self.fine = 500 * (self.ma-self.me) 
      elif(self.ma==self.me) and (self.da>self.de): 
       self.fine = 15 * (self.da-self.de) 


    def print(self): 
     self.calculateFine() 
     print(self.fine) 


expectedDate = [int(i) for i in (input().split(" "))] 
actualDate = [int(i) for i in (input().split(" "))] 
student1 = getFine(expectedDate, actualDate) 
student1.print() 
+0

にその部分を動かすことができ、あなたの時間と助けのためにあなたをとても感謝し、それが働いたと私は時間後に何か新しいことを学びました頭のスクラッチ:) – Kush

関連する問題