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