【每周一坑】房贷计算器 |【解答】生成九宫格图片

大家好,每N周一坑栏目又来啦?

今天的坑是一个很简单但很实用的小程序:

房贷计算器

因为是“刚需”,所以网上早有无数的版本。有人已经用过,有人以后可能会用。有没有想过,类似这种小工具,其实你自己也可以实现。

输入:

  1. 贷款金额
  2. 贷款期限
  3. 标准年利率
  4. 利率浮动倍数

输出: 两种贷款方式 等额本息

  1. 每月还款
  2. 总利息

等额本金

  1. 首月还款
  2. 每月递减额
  3. 总利息

效果:

我们只需要实现功能,并不需要推导数学公式,所以你用现成的公式即可。我这里就不把公式给出了,因为搜索是开发的重要技能,也其实是今天这个坑的重点。

完成之后,可以跟网上的已有工具对比下正确性。

附加题:

  1. 做成 GUI 版本
  2. 做成网页版(JS)

经常有人会说,“×××这个功能网上早就有啦”,“用×××不就可以了”……话是没错,可我们是在学编程哎,不就是要靠着一个个小练习积累经验嘛。看别人程序写得好,是因为你看到的也许是人家第几十万行代码。

不光是房贷计算器,类似的一些小工具,都可以作为初级练手的小程序,甚至写成网页/App/小程序还可能赚钱。亲自做一做才知道未必是想象中那么容易,也会遇到很多小问题。

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

期待各位同学提交解答。

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

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

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


【解答】生成九宫格图片

上次的题目 生成九宫格图片,是对图像处理以及 PIL 库的一个练习。关键方法是 Image 对象的 corp 方法。函数原型:

代码语言:javascript
复制
crop(self, box=None)

box 是四个参数的元组,分别是设置截图的左、上、右、下的坐标位置。 返回值则是以这个位置裁剪出的图像区域。

核心代码参考:

代码语言:javascript
复制
from PIL import Image
img = Image.open('src.jpg')
w, h = img.size
rowheight = h // 3
colwidth = w // 3
for r in range(3):
    for c in range(3):
        box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
        i = img.crop(box)
        i.save('pic_%d.jpg' % (r*3+c))

@GS、@凌烟、@sociopath 三位同学提交了代码。其中 @凌烟 处理了长方形图片的裁剪,@GS 更进一步,用填白的方式保证了长方形图像裁剪后的完整性。

感谢各位同学的参与。

期待在下一期中看到你的代码!