天天看点

【每周一坑】鸡兔同笼 +【解答】房贷计算器

本期的题目,来自一本古老的书籍《孙子算经》,是一道很经典的数学题:

今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?

翻译过来就是:

有若干只鸡和兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?

请问答案是多少?

从纯数学角度来看有不少种解法。那么用代码实现的话,你会选择怎样写呢?

附加题:输入头数 m 和脚数 n,输出鸡的数量 c 和兔子的数量 r,或提示无解。

【每周一坑】鸡兔同笼 +【解答】房贷计算器

参考代码将在下周给出,也可学习其他同学在留言中提交的代码。

期待各位同学提交解答。

提交代码可以使用 paste.ubuntu.com 或 

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。

【解答】房贷计算器

上次的题目,从编码的层面来说并没有什么难度,只要你自己推导出或从网上找到计算公式,然后正确实现即可。

等额本息

每月月供额=[贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]

总利息=还款月数×每月月供额-贷款本金

等额本金

首月还款=贷款本金÷还款月数+贷款本金×月利率

每月减额=贷款本金÷还款月数×月利率

总利息=[(总贷款额÷还款月数+总贷款额×月利率)+总贷款额÷还款月数×(1+月利率)]÷2×还款月数-贷款本金

写成代码:

money = int(input('贷款金额(万):'))
year = int(input('贷款期限(年):'))
rate = float(input('年利率(%):'))
factor = float(input('浮动倍数:'))

month = year * 12
month_rate = rate / 100 * factor / 12
money *= 10000

month_pay = (money * month_rate * (1 + month_rate) ** month) / ((1 + month_rate) ** month - 1)
all_pay = month_pay * month

print('等额本息')
print('每月还款 %.2f' % month_pay)
print('总支付利息 %.2f' % (all_pay - money))

month_pay = money / month + money * month_rate
pay_down = money / month * mo nth_rate
all_pay = ((money / month + money * month_rate) + money / month * (1 + month_rate)) / 2 * month

print('等额本金')
print('首月还款 %.2f' % month_pay)
print('每月递减 %.2f' % pay_down)
print('总支付利息 %.2f' % (all_pay - money))           

@王炎 和 @王文亚 同学都实现了 GUI 的版本,效果很不错

【每周一坑】鸡兔同笼 +【解答】房贷计算器
【每周一坑】鸡兔同笼 +【解答】房贷计算器

【每周一坑】鸡兔同笼 +【解答】房贷计算器
【每周一坑】鸡兔同笼 +【解答】房贷计算器

(在我的电脑上显示比例稍稍有点不正常)

@迫耸、@L 也提交了正确的答案(@灿夜 的代码页面打不开了)。