【发布时间】: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