我正在尝试为贷款创建一个EMI计算器。问题的描述是:
给定本金、利率、月或季度分期付款条件和贷款期限(以月/年为单位),并打印EMI金额。输入格式:本金,年利率,按月或季度分期付款的M/ Q,年期(Y)或月(M)输入: 10000,12,M,2Y:本金= 10000,利率= 12%,月分期付款,期限=2年50000,10.5,Q,36M:本金= 50000,利率= 10.5%,季度分期付款,期限=36个月
这段代码有哪些缺陷?我怎么才能完善它呢?
def EMI_calculator(P,R , M,d):
#set rate of interest monthly
print type(R)
r= (R/(12.0 *100))
print r
#chechk if monthly or quaterly installment
if M== 'Q':
x=4
else:
x=1
if d[-1] =='Y':
print "duration in years"
n = d[0:(len(d)-1)]
print n
m = 12 *int(n)
print m
elif d[-1] =='M':
print "duration is in months"
n = d[0:(len(d)-1)]
print n
m = 1 *int(n)
print m
EMI = x*(P*r*(1+r)**m)//((1+r)**m - 1)
return EMI
print EMI_calculator(10000,12,'Q','3Y')发布于 2018-01-06 16:21:44
在对其他问题的评论中,也提到了一些同样适用于这个问题的内容,例如:
现在,您有一些幻数,如12、100和4。告诉他们名字。让它们成为常量。别这样丢下他们。
有些打印没有多大意义,比如打印类型的R或打印的持续时间是几年或几个月。这看起来更像是调试信息。我建议您看看日志记录模块并尝试一下。但对于如此小的项目来说,这可能是一种过度。
此n = d[0:(len(d)-1)]在代码中重复两次,并且可以从该if-elif语句中取出。此外,它还可以简化为n = d[:-1]。
而不是写作
EMI = x*(P*r*(1+r)**m)//((1+r)**m - 1)
return EMI你可以只写
return x*(P*r*(1+r)**m)//((1+r)**m - 1)最后,将您的print EMI_calculator(10000,12,'Q','3Y')包装如下:
if __name__ == '__main__':
print EMI_calculator(10000, 12, 'Q', '3Y')你可以读到它,这里。
https://codereview.stackexchange.com/questions/184184
复制相似问题