这个好难啊谁来教一下我真的不会啦做了好几次都是做不出来,有没有大师来教我一下呗
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
这个很简单那的,只是基础的逻辑控制
# 还能优化下代码,提取公共函数缩减代码量
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)