第一章的內(nèi)容其實(shí)是求解線性的方程組.
因?yàn)槲⑿艑?duì)公式不太友好(可能是我不會(huì)),所以理論的東西我會(huì)考慮寫成紙質(zhì)的,之后錄制成小視頻來(lái)呈現(xiàn),文章內(nèi)容側(cè)重于算法的實(shí)現(xiàn).其次實(shí)現(xiàn)中出現(xiàn)的語(yǔ)法也會(huì)講解.
在這個(gè)demo中使用了注解的功能,個(gè)人覺(jué)得如果想寫出健壯得code或者看起來(lái)code有點(diǎn)厲害(這屬于裝逼需求了),可以使用.
Python 注解+參數(shù)+返回值小結(jié)在一年的年初,我寫過(guò)一篇相關(guān)的文章.
typing是Python3.5中開(kāi)始新增的專用于類型注解(type hints)的模塊,為Python程序提供靜態(tài)類型檢查.
回調(diào)函數(shù)可以使用類似Callable[[Arg1Type, Arg2Type],ReturnType]的類型注釋.
callable也是demo里面使用的
根據(jù)整潔代碼這本書(shū)的意思哇,一個(gè)好的代碼是不言而喻的,本身就在述說(shuō)著一切,在Python里面是使用的字符串文檔.
其次在工程的代碼里面,測(cè)試是一個(gè)不容錯(cuò)過(guò)的環(huán)節(jié),但是對(duì)于一個(gè)小的程序不必要寫龐大的單元測(cè)試,對(duì)這個(gè)問(wèn)題Python有更有趣的實(shí)現(xiàn):
doctest是Python自帶的一個(gè)模塊。doctest有兩種使用方式:一種是嵌入到python源碼中,另外一種是放到一個(gè)獨(dú)立文件。
doctest模塊會(huì)搜索那些看起來(lái)像是Python交互式會(huì)話中的代碼片段,然后嘗試執(zhí)行并驗(yàn)證結(jié)果。
多說(shuō)無(wú)疑,寫段代碼看看:
注意""""""這個(gè)里面的內(nèi)容
最后的參數(shù)是:verbose參數(shù),如果設(shè)置為True則在執(zhí)行測(cè)試的時(shí)候會(huì)輸出詳細(xì)信息。默認(rèn)是False,表示運(yùn)行測(cè)試時(shí),只有失敗的用例會(huì)輸出詳細(xì)信息,成功的測(cè)試用例不會(huì)輸出任何信息。
一個(gè)詳細(xì)的輸出結(jié)果
內(nèi)容回到眼前:“波爾查諾-維爾斯特拉斯定理是指有界數(shù)列必有收斂子列。從極限點(diǎn)的角度來(lái)敘述致密性定理,就是:有界數(shù)列必有極限點(diǎn)。”找到ab之間為0的位置.
導(dǎo)入模塊,把函數(shù)的框架寫一下,注意這里使用了注解,三個(gè)參數(shù)后兩個(gè)都是f類型,返回也是f類型.第一個(gè)參數(shù)是要傳遞一個(gè)函數(shù)進(jìn)去,下面是這個(gè)函數(shù)的demo的樣子.
這里寫一個(gè)小函數(shù),也使用一下注解
下面寫函數(shù)體:
一開(kāi)始就是我們的參數(shù)了,這里也有注解
如果里面的任意一個(gè)是0,這就是根了,數(shù)學(xué)問(wèn)題.
如果兩個(gè)函數(shù)乘大于0,會(huì)觸發(fā)一個(gè)值錯(cuò)誤,因?yàn)檫@就不是一個(gè)穿根的樣子
這段代碼其實(shí)是含金量最高的代碼了,首先我們每次要確定的X位置,先定義,我們使用while循環(huán),它適合一開(kāi)始不知道次數(shù)的循環(huán),但是我們知道它停止的范圍,至于為什么是10-7這個(gè),其實(shí)我老師說(shuō),就是100W/1就和0一樣大了.減完以后發(fā)現(xiàn)大于0,那么就要繼續(xù)運(yùn)算,先要確認(rèn)一下mid是不是就為零點(diǎn)了,如果是就返回,負(fù)責(zé)的話,這里就是計(jì)算值,下面的交換變量其實(shí)很重要,完成了重要局部參數(shù)的傳遞,接著繼續(xù)二分計(jì)算.
調(diào)用的時(shí)候就是這樣
因?yàn)槭荂allable函數(shù),所以一個(gè)短小的匿名函數(shù)更適合這樣的場(chǎng)景。
審核編輯:劉清
-
算法
+關(guān)注
關(guān)注
23文章
4684瀏覽量
94390 -
python
+關(guān)注
關(guān)注
56文章
4822瀏覽量
85894
原文標(biāo)題:Python實(shí)現(xiàn)所有算法-二分法
文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
PID控制算法的C語(yǔ)言實(shí)現(xiàn):PID算法原理
使用Python實(shí)現(xiàn)xgboost教程
一個(gè)月速成python+OpenCV圖像處理

【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+內(nèi)容簡(jiǎn)介
【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+介紹基礎(chǔ)硬件算法模塊
【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+一本介紹基礎(chǔ)硬件算法模塊實(shí)現(xiàn)的好書(shū)
如何使用Python實(shí)現(xiàn)PID控制
手寫圖像模板匹配算法在OpenCV中的實(shí)現(xiàn)

名單公布!【書(shū)籍評(píng)測(cè)活動(dòng)NO.46】從算法到電路 | 數(shù)字芯片算法的電路實(shí)現(xiàn)
C加密算法的實(shí)現(xiàn)

評(píng)論