2016-08-03 52 views
-1

我最近提交了这个作业,但无法得到任何问题的代码工作。我很想知道我可以做些什么来确保我下一次做对。无法获得输出Python类和函数代码

问题1(5分) 创建一个名为'InterestCalculator'的基类/父类。 创建一个名为'CICalculator'的子类。 'CICalculator'类将只有一个家长,'InterestCalculator'。创建一个名为'SICalculator'的子类。 'SI'类只有一个家长,'InterestCalculator'。 父类需要有一个初始化方法,该方法将初始化 计算和存储兴趣所需的所有值。

子类'CICalculator'和'SICalculator' 必须实现'calcfinalval'方法,该方法将计算每种情况下的最终值 。复合利息由下式给出A = p *(1+(r /(n * 100)))^(n * t)其中p是本金额,r是利率,t是时间年,n是每年复利的次数,A是t年后的总金额。 假设n = 2.

简单兴趣由下式给出:A = p(1+(r * t/100)其中p是委托人, r是利率,t是年的时间,A是经过T年总量 。

一旦所有的类都被定义,调用计算并打印 终值必须遵循下面的代码。

c = CICalculator(2,0.1,1000) 
    c.calcfinalval() 
    print c.finalval 

    s = SICalculator(2,0.1,1000) 
    s.calcfinalval() 
    print s.finalval 

#解决方案1 ​​

class InterestCalculator: 
    def __init__(self, A, p, r, y, t): 
     self.A = A 
     self.p = p 
     self.r = r 
     self.y = y 
     self.t = t 

    def calcfinalval(self): 
    return "Interest Rates" 


class CICalculator(InterestCalculator): 
    def __init__(self, A, p, r, y, t): 
    self.A = self.p*(1+(self.r/(self.t*100)))^(self.t*self.y) 

class SICalculator(InterestCalculator): 
    def __init__(self, A, p, r, y): 
    self.A = self.p(1+(self.r*self.y/100) 

c = CICalculator(2,0.1,1000) 
c.calcfinalval() 
print c.finalval 

s = SICalculator(2,0.1,1000) 
s.calcfinalval() 
print s.finalval 

问题2(5分) 队列如下FIFO(先入先出)。 FIFO是第一个添加的元素是第一个可以检索的元素。考虑 一个值为[1,2,3]的列表。创建一个名为MyQueue的类,该类将有两个方法:queueadd和queueretrieve分别从列表中按FIFO顺序添加和检索元素 。每次功能调用后, 将打印列表的内容。将7添加到队列中,然后按照 FIFO规则检索元素。

您对级呼叫将作为如下 A = [1,2,3] Q = myQueue中的(a) q.queueadd(7) q.queueretrieve()

输出屏幕应该类似于

1 2 3 7 
    2 3 7 
    3 7 
    7 

#2溶液

class MyQueue: 

    def __init__(self): 
    self.in_stack = [] 
    self.out_stack = [] 

    def queueadd(self, obj): 
    self.in_stack.append(obj) 

    def queueretrieve(self): 
    if not self.out_stack: 
     while self.in_stack: 
      self.out_stack.append(self.in_stack.pop()) 
    return self.out_stack.pop() 

    a = [1,2,3] 
    q = MyQueue(a) 
    q.queueadd(7) 
    q.queueretrieve() 
+0

你测试了你的代码吗?有很多错误。我怀疑主持人很快就会出现并将你的问题过于宽泛。我会推荐测试代码,阅读错误信息,相应地修改它,然后 - 如果你仍然无法弄清楚 - 发布1 *特定的问题(即不是完整的作业问题) – Tom

回答

-2

你的代码有很多错误。他们大多数是缩进错误。我只对错误进行了排序,您想实现的核心算法没有改变。

class InterestCalculator: 
    def __init__(self, p, r,t,n=1,A=0): 
    self.A = A 
    self.p = p 
    self.r = r 
    self.n = n 
    self.t = t 

class CICalculator(InterestCalculator): 
    def __init__(self, p, r, t, n=1, A=0): 
    InterestCalculator.__init__(self,p,r,t,n) 

    def calcfinalval(self): 
    self.A = self.p*(1+ self.r/ (self.n*100))**(self.n*self.t) 
    return self.A 

class SICalculator(InterestCalculator): 
    def __init__(self, p, r, t): 
    InterestCalculator.__init__(self,p,r,t) 

    def calcfinalval(self): 
    self.A = self.p*(1+(self.r*self.t/100)) 
    return self.A 

c = CICalculator(2,0.1,1000) 
c.calcfinalval() 
print c.A 

s = SICalculator(2,0.1,1000) 
s.calcfinalval() 
print s.A 

对于第二个问题

class MyQueue: 
    def __init__(self,in_stack): 
    self.in_stack = in_stack 
    self.out_stack = [] 

    def queueadd(self, obj): 
    self.in_stack.append(obj) 

    def queueretrieve(self): 
    if not self.out_stack: 
     while self.in_stack: 
     self.out_stack.append(self.in_stack.pop()) 
    return self.out_stack.pop() 

a = [1,2,3] 
q = MyQueue(a) 
q.queueadd(7) 

print (q.queueretrieve()) 
print (q.queueretrieve()) 
print (q.queueretrieve()) 
print (q.queueretrieve()) 
+0

谢谢许多。在我提出问题之前,我会确保进行更多的故障排除。再次感谢 –

-1

实现在您在方案1已经实施了类似的方式Q1的方法是:

class InterestCalculator: 
    def __init__(self,p, r, y, t): 
     self.p = p 
     self.r = r 
     self.y = y 
     self.t = t 

class CICalculator(InterestCalculator): 
    def __init__(self,InterestCalculator): 
     self.p=InterestCalculator.p 
     self.r=InterestCalculator.r 
     self.y=InterestCalculator.y 
     self.t=InterestCalculator.t 
    def calcfinalval(self): 
     val = self.p*(1+(self.r/(self.t*100.0)))**(self.t*self.y) 
     return val 

class SICalculator(InterestCalculator): 
    def __init__(self,InterestCalculator): 
     self.p=InterestCalculator.p 
     self.r=InterestCalculator.r 
     self.y=InterestCalculator.y 
    def calcfinalval(self): 
     val = self.p*(1+(self.r*self.y/100.0)) 
     return val 

#Initialize an interestcalculator object 
IC = InterestCalculator(1000,1,10,4) 

#Create a CICalculator object 
CI = CICalculator(IC) 
print CI.calcfinalval() 

SI = SICalculator(IC) 
print SI.calcfinalval() 

然而,也有很多的我在这段代码中改变了一些错综复杂的内容,如果你认真学习python,我会建议坐在知道这个东西的人身上。

+0

请问,谢谢! –