我是面向对象概念的新手,我尝试使用OO技术解决这个问题。我用普通的编程技术解决了这个问题,但是我无法使用OO技术。
我尝试过的: 起初,我只调用了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 :(得分:0)
您的日期是字符串,然后您想要相互减去。首先使用以下内容将它们转换为整数或浮点数:
getFine.print()
这会解决您的问题吗?
如果您只想调用getFine.print()
函数而不是其他函数,可以在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()
方法中调用这些类方法。由于您可能希望在每个函数调用中分隔年份月份和日期,因此可以将该部分移动到init方法
{{1}}