首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据本金、比率、期限(月或年)计算EMI

根据本金、比率、期限(月或年)计算EMI
EN

Code Review用户
提问于 2018-01-03 17:11:49
回答 1查看 3.8K关注 0票数 3

我正在尝试为贷款创建一个EMI计算器。问题的描述是:

给定本金、利率、月或季度分期付款条件和贷款期限(以月/年为单位),并打印EMI金额。输入格式:本金,年利率,按月或季度分期付款的M/ Q,年期(Y)或月(M)输入: 10000,12,M,2Y:本金= 10000,利率= 12%,月分期付款,期限=2年50000,10.5,Q,36M:本金= 50000,利率= 10.5%,季度分期付款,期限=36个月

这段代码有哪些缺陷?我怎么才能完善它呢?

代码语言:javascript
复制
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')
EN

回答 1

Code Review用户

回答已采纳

发布于 2018-01-06 16:21:44

在对其他问题的评论中,也提到了一些同样适用于这个问题的内容,例如:

  1. 试着遵循PEP 8风格指南。
  2. 应避免使用单一字母名称。
  3. 避免无用的注释,使您的代码自我解释。
  4. 检查无效输入,引发异常。

现在,您有一些幻数,如121004。告诉他们名字。让它们成为常量。别这样丢下他们。

有些打印没有多大意义,比如打印类型的R或打印的持续时间是几年或几个月。这看起来更像是调试信息。我建议您看看日志记录模块并尝试一下。但对于如此小的项目来说,这可能是一种过度。

n = d[0:(len(d)-1)]在代码中重复两次,并且可以从该if-elif语句中取出。此外,它还可以简化为n = d[:-1]

而不是写作

代码语言:javascript
复制
EMI = x*(P*r*(1+r)**m)//((1+r)**m - 1)
return EMI

你可以只写

代码语言:javascript
复制
return x*(P*r*(1+r)**m)//((1+r)**m - 1)

最后,将您的print EMI_calculator(10000,12,'Q','3Y')包装如下:

代码语言:javascript
复制
if __name__ == '__main__':
    print EMI_calculator(10000, 12, 'Q', '3Y')

你可以读到它,这里

票数 3
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/184184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档