【问题标题】:Cannot get an output Python Classes and Functions code无法获得输出 Python 类和函数代码
【发布时间】:2016-08-03 17:41:42
【问题描述】:

我最近提交了这个作业,但无法让这两个问题的代码正常工作。我很想知道我可以做些什么来确保我下次做对了。

问题 1(5 分) 创建一个名为“InterestCalculator”的基类/父类。 创建一个名为“CICalculator”的子类。 “CICalculator”类将只有一个父类,即“InterestCalculator”。创建一个名为“SICalculator”的子类。 “SI”类将只有一个父类,即“InterestCalculator”。 父类需要有一个 init 方法,该方法将初始化 计算和存储利息所需的所有值。

子类“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(先进先出)。先进先出是这种情况,其中 添加的第一个元素是可以检索的第一个元素。考虑 具有值 [1,2,3] 的列表。创建一个名为 MyQueue 的类,该类将具有 两种方法:queueadd 和 queueretrieve 添加和检索元素 从列表中分别按 FIFO 顺序排列。每次函数调用后, 打印列表的内容。将 7 添加到队列中,然后按照 FIFO 规则来检索元素。

您对班级的电话如下 a = [1,2,3] q = 我的队列(一) 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()

【问题讨论】:

  • 你测试你的代码了吗?有很多错误。我怀疑主持人会很快出现并结束您的问题,因为您的问题过于广泛。我建议测试代码,阅读错误消息,相应地修改它,然后——如果你仍然无法弄清楚——发布 1 个 specific 问题(即,不是完整的作业问题)

标签: python python-2.7 function class


【解决方案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,我建议您与了解这些内容的人坐下来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2019-08-29
    相关资源
    最近更新 更多