教一下我这个好难啊呜

这个好难啊谁来教一下我真的不会啦做了好几次都是做不出来,有没有大师来教我一下呗

img

img



flag = True
loan_rate = {
    '商业贷款':{5:0.0475,'other':0.049},
    '公积金贷款':{5:0.0275,'other':0.0325},
    '组合贷款':{'商业贷款':{5:0.0475,'other':0.049},'公积金贷款':{5:0.0275,'other':0.0325}}
}

def MonthSupply(loan_amount,loan_term,loan_month_rate):
    '''
    loan_amount: 贷款金额(万元);loan_term:贷款期限(年);loan_month_rate:贷款月利率
    '''
    return loan_amount * 10000 * ( loan_month_rate * pow( (1+loan_month_rate),loan_term*12 )  ) / ( pow( (1+loan_month_rate),loan_term*12 ) -1 )


print('贷款类型:1.商业贷款  2.公积金贷款  3.组合贷款  0.退出')
while flag:
    loan_type = int(input('请选择服务类型[0-3]:'))
    if loan_type == 0:
        flag = False
    else:
        loan_amount = float( input('请输入贷款金额(万):') )
        loan_term = int(  input('请选择期限(年):5、10、15、20、25、30:')  )
        if loan_type == 1:
            if 0 < loan_term <= 5:
                loan_month_rate = loan_rate.get('商业贷款').get(5) /12
            else:
                loan_month_rate = loan_rate.get('商业贷款').get('other') /12
            month_pay = MonthSupply(loan_amount=loan_amount, loan_term=loan_term, loan_month_rate=loan_month_rate)
            loan_amount_count = month_pay * loan_term * 12
            loan_interest = loan_amount_count - loan_amount * 10000
            print('每月月供参考(元):', round(month_pay, 2))
            print('支付利息:', round(loan_interest, 2))
            print('还款总额:', round(loan_amount_count, 2))

        elif loan_type == 2:
            if  0< loan_term <= 5:
                loan_month_rate = loan_rate.get('公积金贷款').get(5) /12
            else:
                loan_month_rate = loan_rate.get('公积金贷款').get('other') /12

            month_pay = MonthSupply(loan_amount=loan_amount, loan_term=loan_term, loan_month_rate=loan_month_rate)
            loan_amount_count = month_pay * loan_term * 12
            loan_interest = loan_amount_count - loan_amount * 10000
            print('每月月供参考(元):', round(month_pay, 2))
            print('支付利息:', round(loan_interest, 2))
            print('还款总额:', round(loan_amount_count, 2))

        elif loan_type == 3:
            loan_amount_commercial = float( input('请输入商业贷款金额(万):') )
            loan_amount_accumulation = loan_amount - loan_amount_commercial   #公积金贷款金额
            if 0 < loan_term <= 5:
                loan_month_rate_commercial = loan_rate.get('商业贷款').get(5) / 12
                loan_month_rate_accumulation = loan_rate.get('公积金贷款').get(5) / 12

            else:
                loan_month_rate_commercial = loan_rate.get('商业贷款').get('other') / 12
                loan_month_rate_accumulation = loan_rate.get('公积金贷款').get('other') / 12

            month_pay_commercial = MonthSupply( loan_amount=loan_amount_commercial,loan_term=loan_term,loan_month_rate=loan_month_rate_commercial )
            month_pay_accumulation = MonthSupply( loan_amount=loan_amount_accumulation,loan_term=loan_term,loan_month_rate=loan_month_rate_accumulation )
            month_pay = month_pay_commercial + month_pay_accumulation
            loan_amount_count = month_pay * loan_term * 12
            loan_interest = loan_amount_count - loan_amount * 10000

            print('每月月供参考(元):',round( month_pay,2 ))
            print('支付利息:',round( loan_interest,2 ))
            print('还款总额:',round( loan_amount_count,2 ))






内容比较长,我就直接写成博客了,觉得有用的话就点个赞吧:
https://blog.csdn.net/zhangawei123/article/details/130927869

这个很简单那的,只是基础的逻辑控制

img

# 还能优化下代码,提取公共函数缩减代码量
import sys


class Calc:
    def __init__(self, years):
        self.years = years

    def commercial_calc(self, principal):
        """
        商业贷款,在方法中打印,无return
        """
        years_interest_rate = 0.0475
        if self.years > 5:
            years_interest_rate = 0.0490
        month_interest_rate = years_interest_rate / 12
        total_month = self.years * 12
        month_pay = principal * (month_interest_rate * (1 + month_interest_rate) ** total_month) / (
                ((1 + month_interest_rate) ** total_month) - 1)
        print('每月月供参考(元):{:.2f}'.format(month_pay))
        total_pay = month_pay * self.years * 12
        total_interest = total_pay - principal
        print('支付利息:{:.2f}'.format(total_interest))
        print('还款总额:{:.2f}'.format(total_pay))

    def housing_calc(self, principal):
        """
        公积金贷款
        """
        years_interest_rate = 0.0275
        if self.years > 5:
            years_interest_rate = 0.0325
        month_interest_rate = years_interest_rate / 12
        total_month = self.years * 12
        month_pay = principal * (month_interest_rate * (1 + month_interest_rate) ** total_month) / (
                ((1 + month_interest_rate) ** total_month) - 1)
        print('每月月供参考(元):{:.2f}'.format(month_pay))
        total_pay = month_pay * self.years * 12
        total_interest = total_pay - principal
        print('支付利息:{:.2f}'.format(total_interest))
        print('还款总额:{:.2f}'.format(total_pay))

    def group_calc(self, c_p, h_p):
        """
        组合贷款,无非是公积金和商业贷款分开计算
        """
        com_years_interest_rate = 0.0475
        hou_years_interest_rate = 0.0275
        if self.years > 5:
            com_years_interest_rate = 0.0490
            hou_years_interest_rate = 0.0325
        com_month_interest_rate = com_years_interest_rate / 12
        hou_month_interest_rate = hou_years_interest_rate / 12
        total_month = self.years * 12
        month_pay = c_p * (com_month_interest_rate * (1 + com_month_interest_rate) ** total_month) / (
                ((1 + com_month_interest_rate) ** total_month) - 1) + h_p * (
                            hou_month_interest_rate * (1 + hou_month_interest_rate) ** total_month) / (
                            ((1 + hou_month_interest_rate) ** total_month) - 1)
        print('每月月供参考(元):{:.2f}'.format(month_pay))
        total_pay = month_pay * self.years * 12
        total_interest = total_pay - c_p - h_p
        print('支付利息:{:.2f}'.format(total_interest))
        print('还款总额:{:.2f}'.format(total_pay))


if __name__ == '__main__':
    while True:
        print('贷款类型: 1.商业贷款 2.公积金贷款 3.组合贷款 0.退出')
        try:
            loan_type = int(input('请选择服务类型:'))
            if loan_type == 0:
                print('退出程序...退出成功')
                sys.exit(0)
            elif loan_type == 3:
                c_p = int(input('请输入商业贷款金额(万):')) * 10000
                h_p = int(input('请输入公积金贷款金额(万):')) * 10000
            elif loan_type not in [1, 2]:
                print('输入参数错误!初始化成功,请重新输入。')
                continue
            else:
                loan_principal = int(input('请输入贷款金额(万):')) * 10000
            loan_years = int(input('请选择期限(年):5、10、15、20、25、30:'))
            if loan_years not in [5, 10, 15, 20, 25, 30]:
                print('输入参数错误!初始化成功,请重新输入。')
                continue
        except ValueError:
            print('输入参数错误!初始化成功,请重新输入。')
            continue
        calc = Calc(loan_years)
        if loan_type == 1:
            calc.commercial_calc(loan_principal)
        elif loan_type == 2:
            calc.housing_calc(loan_principal)
        elif loan_type == 3:
            calc.group_calc(c_p, h_p)

img


做了一些简单的异常处理,乱输入不会导致程序bug,当然也有没处理的地方。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^