使用Python实现所有算法

描述

第一章的内容其实是求解线性的方程组.

因为微信对公式不太友好(可能是我不会),所以理论的东西我会考虑写成纸质的,之后录制成小视频来呈现,文章内容侧重于算法的实现.其次实现中出现的语法也会讲解.

在这个demo中使用了注解的功能,个人觉得如果想写出健壮得code或者看起来code有点厉害(这属于装逼需求了),可以使用.

Python 注解+参数+返回值小结 在一年的年初,我写过一篇相关的文章.

typing是Python3.5中开始新增的专用于类型注解(type hints)的模块,为Python程序提供静态类型检查.

回调函数可以使用类似Callable[[Arg1Type, Arg2Type],ReturnType]的类型注释.

算法

callable也是demo里面使用的

算法

根据整洁代码这本书的意思哇,一个好的代码是不言而喻的,本身就在述说着一切,在Python里面是使用的字符串文档.

其次在工程的代码里面,测试是一个不容错过的环节,但是对于一个小的程序不必要写庞大的单元测试,对这个问题Python有更有趣的实现:

doctest是Python自带的一个模块。doctest有两种使用方式:一种是嵌入到python源码中,另外一种是放到一个独立文件。

doctest模块会搜索那些看起来像是Python交互式会话中的代码片段,然后尝试执行并验证结果。

多说无疑,写段代码看看:

算法

注意""""""这个里面的内容

最后的参数是:verbose参数,如果设置为True则在执行测试的时候会输出详细信息。默认是False,表示运行测试时,只有失败的用例会输出详细信息,成功的测试用例不会输出任何信息。

算法

一个详细的输出结果

内容回到眼前:“波尔查诺-维尔斯特拉斯定理是指有界数列必有收敛子列。从极限点的角度来叙述致密性定理,就是:有界数列必有极限点。” 找到ab之间为0的位置.

算法

导入模块,把函数的框架写一下,注意这里使用了注解,三个参数后两个都是f类型,返回也是f类型.第一个参数是要传递一个函数进去,下面是这个函数的demo的样子.

算法

这里写一个小函数,也使用一下注解

下面写函数体:

算法

算法

一开始就是我们的参数了,这里也有注解

如果里面的任意一个是0,这就是根了,数学问题.

算法

如果两个函数乘大于0,会触发一个值错误,因为这就不是一个穿根的样子

算法

这段代码其实是含金量最高的代码了,首先我们每次要确定的X位置,先定义,我们使用while循环,它适合一开始不知道次数的循环,但是我们知道它停止的范围,至于为什么是10-7这个,其实我老师说,就是100W/1就和0一样大了.减完以后发现大于0,那么就要继续运算,先要确认一下mid是不是就为零点了,如果是就返回,负责的话,这里就是计算值,下面的交换变量其实很重要,完成了重要局部参数的传递,接着继续二分计算.

算法

调用的时候就是这样

算法

因为是Callable函数,所以一个短小的匿名函数更适合这样的场景。

审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分