请编写CBank类,完成以下功能:
构造函数__init__中对存款__deposit,利率__rate和年__year都初始化为0.00;
实例方法setData完成键盘输入数据,对存款__deposit,利率__rate和年__year进行修改,
要求应有格式检查,排除输入非数字型字符串和负数的可能,格式不符合要求,return False,格式符合要求,return True;
实例方法displayData完成存款__deposit,利率__rate和年__year的输出,保留2位小数;
实例方法computeSimInterest采用单利公式计算存款总额,实例方法computeDifference采用复利和单利公式分别计算存款总额,求得两种存款的差额的"绝对值",
输出的结果保留2位小数;
复利公式:利本合计=本金×(1+利率/100)^年
单利公式:利本合计=本金+本金×(利率/100)×年
调用类实现功能的参考代码如下:
输入格式:
调用setData时,一行输入:存款 利率 年。例如:1000 3.50 2
setData函数返回True时,根据提示输入选项,按照不同计算方法完成存款总额或差额的计算。例如:1 输出格式:
在displayData、computeSimInterest和computeDifference实例方法中完成题目要求的输出,参考输出样例格式。
输入样例1:
1000 3.50 2
1
输出样例1:
存款为1000.00
利率为3.50
存2.00年
采用单利公式计算输入1,计算单利和复利的差额输入2
按单利计算,存款总额为1070.00
输入样例2:
1000 3.50 2
2
输出样例2:
存款为1000.00
利率为3.50
存2.00年
**采用单利公式计算输入1,计算单利和复利的差额输入2
复利和单利的差额为1.22
输入样例3:
1000 3.50 2
3
输出样例3:
存款为1000.00
利率为3.50
存2.00年
采用单利公式计算输入1,计算单利和复利的差额输入2
只有1和2两种选择
输入样例4:
-1000 -3.50 2
输出样例4:
请输入正数
输入样例5:
10y0 t 2
输出样例5:
请输入数值型字符串**
程序代码:
class CBank:
def __init__(self):
self.__deposit = 0.00
self.__rate = 0.00
self.__year = 0.00
def setData(self):
s = input()
lis = s.split(" ")
try:
self.__deposit = float(lis[0])
self.__rate = float(lis[1])
self.__year = float(lis[2])
except ValueError:
print("请输入数值型字符串")
return False
if self.__deposit > 0 and self.__year > 0 and self.__rate > 0:
return True
else:
print("请输入正数")
return False
def computeSimInterest(self):
sb = self.__deposit + self.__deposit * (self.__rate / 100.0) * self.__year
print("按单利计算,存款总额为{0:0.2f}".format(sb),end='')
def computeComInterest(self):
sb = self.__deposit * (1 + self.__rate / 100.0) ** self.__year
print("按复利计算,存款总额为{0:0.2f}".format(sb),end="")
def computeDifference(self):
all = (self.__deposit * (1 + self.__rate/100) ** self.__year) - (self.__deposit + self.__deposit * (self.__rate/100) * self.__year)
if all < 0:
all*=-1
print("复利和单利的差额为%.2f" % all)
def displayData(self):
print("存款为{0:0.2f}".format(self.__deposit))
print("利率为{0:0.2f}".format(self.__rate))
print("存{0:0.2f}年".format(self.__year))
if __name__ == "__main__":
dpst = CBank()
if (dpst.setData()):
select = input()
dpst.displayData()
print("采用单利公式计算输入1,计算单利和复利的差额输入2")
if(select == '2'):
dpst.computeDifference()
elif(select == '1'):
dpst.computeSimInterest()
else:
print("只有1和2两种选择")