第一章的內容其實是求解線性的方程組.
因為微信對公式不太友好(可能是我不會),所以理論的東西我會考慮寫成紙質的,之后錄制成小視頻來呈現,文章內容側重于算法的實現.其次實現中出現的語法也會講解.
在這個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函數,所以一個短小的匿名函數更適合這樣的場景。
審核編輯:劉清
-
算法
+關注
關注
23文章
4613瀏覽量
92946 -
python
+關注
關注
56文章
4797瀏覽量
84720
原文標題:Python實現所有算法-二分法
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論