本文目錄一覽:
- 1、Python筆記-取模運算%
- 2、Python筆記:Python裝飾器
- 3、Python該怎麼入門?
- 4、Python筆記——’utf-8′ codec can’t decode byte 0xc5 in position 0: invalid continuation byte
- 5、Python筆記之input和變數賦值
Python筆記-取模運算%
對於該算術運算符: % ,取模運算存在如下定理:
對於一個正整數 而言,一定存在等式 ,代表 可以被拆分成最多 個 並且餘下一個 ,此時稱 。
例如:正整數 17,存在等式 17 = 3 * 5 + 2,即 17 % 5 = 2.
這裡介紹一下數學中的一種運算, 取余運算 。
兩者在對正整數的運算中完全沒有區別,但是對於負整數的運算,則會存在一定的區別。
但是要記住下面這句話,就可以很好的進行區分:
取余公式中的k要向0靠攏,也就是如果大於等於0,那就要向下取整;如果小於0,那就要向上取整。
取模公式中的k要向負無窮靠攏,不管什麼情況,都是向下取整。
或者是
向上取整 math.ceil() 可以理解成 要選擇大於等於該數值的整數部分的最小整數;
向下取整 math.floor() 可以理解成 要選擇小於等於該數值的整數部分的最大整數。
也就是:
下面做些實際運算,加深一下印象:
Python筆記:Python裝飾器
裝飾器是通過裝飾器函數修改原函數的一些功能而不需要修改原函數,在很多場景可以用到它,比如① 執行某個測試用例之前,判斷是否需要登錄或者執行某些特定操作;② 統計某個函數的執行時間;③ 判斷輸入合法性等。合理使用裝飾器可以極大地提高程序的可讀性以及運行效率。本文將介紹Python裝飾器的使用方法。
python裝飾器可以定義如下:
輸出:
python解釋器將test_decorator函數作為參數傳遞給my_decorator函數,並指向了內部函數 wrapper(),內部函數 wrapper() 又會調用原函數 test_decorator(),所以decorator()的執行會先列印’this is wrapper’,然後列印’hello world’, test_decorator()執行完成後,列印 ‘bye’ ,*args和**kwargs,表示接受任意數量和類型的參數。
裝飾器 my_decorator() 把真正需要執行的函數 test_decorator() 包裹在其中,並且改變了它的行為,但是原函數 test_decorator() 不變。
一般使用如下形式使用裝飾器:
@my_decorator就相當於 decorator = my_decorator(test_decorator) 語句。
內置裝飾器@functools.wrap可用於保留原函數的元信息(將原函數的元信息,拷貝到對應的裝飾器函數里)。先來看看沒有使用functools的情況:
輸出:
從上面的輸出可以看出test_decorator() 函數被裝飾以後元信息被wrapper() 函數取代了,可以使用@functools.wrap裝飾器保留原函數的元信息:
輸出:
裝飾器可以接受自定義參數。比如定義一個參數來設置裝飾器內部函數的執行次數:
輸出:
Python 支持多個裝飾器嵌套:
裝飾的過程:
順序從裡到外:
test_decorator(‘hello world’) 執行順序和裝飾的過程相反。
輸出:
類也可以作為裝飾器,類裝飾器主要依賴__call__()方法,是python中所有能被調用的對象具有的內置方法(python魔術方法),每當調用一個類的實例時,__call__()就會被執行一次。
下面的類裝飾器實現統計函數執行次數:
輸出:
下面介紹兩種裝飾器使用場景
統計函數執行所花費的時間
輸出:
在使用某些web服務時,需要先判斷用戶是否登錄,如果沒有登錄就跳轉到登錄頁面或者提示用戶登錄:
–THE END–
Python該怎麼入門?
作為初學者,第一個月的月目標應該是這樣的:
熟悉基本概念(變數,條件,列表,循環,函數)
練習超過 30 個編程問題
利用這些概念完成兩個項目
熟悉至少 2 個框架
開始使用集成開發環境(IDE),Github,hosting,services 等
整體計劃
現在,我們先將月計劃細化成周計劃。
第一周:熟悉 Python
要積極探索 Python 的使用方法,儘可能多的完成下面這些任務:
第一天:基本概念(4 小時):print,變數,輸入,條件語句
第二天:基本概念(5 小時):列表,for 循環,while 循環,函數,導入模塊
第三天:簡單編程問題(5 小時):交換兩個變數值,將攝氏度轉換為華氏溫度,求數字中各位數之和,判斷某數是否為素數,生成隨機數,刪除列表中的重複項等等
第四天:中級編程問題(6 小時):反轉一個字元串(迴文檢測),計算最大公約數,合併兩個有序數組,猜數字遊戲,計算年齡等等
第五天:數據結構(6 小時):棧,隊列,字典,元組,樹,鏈表。
第六天:面向對象編程(OOP)(6 小時):對象,類,方法和構造函數,面向對象編程之繼承
第七天:演算法(6 小時):搜索(線性和二分查找)、排序(冒泡排序、選擇排序)、遞歸函數(階乘、斐波那契數列)、時間複雜度(線性、二次和常量)
通過第一周時間,python大致能熟悉了,自學能力稍微弱一點找人帶下你,節約自己的時間。
注意:別急著安裝 Python 環境!
這看起來很矛盾,但是你一定要相信我。我有幾個朋友,他們因為語言工具包和 IDE 安裝的失敗而逐漸失去了學習下去的慾望。因此,我的建議是先使用一些安卓 app 來探索這門語言,如果你是個技術小白,安裝 Python 環境可不是你的首要任務。
第二周:開始軟體開發(構建項目)
接下來,讓我們朝著軟體開發任務進軍吧!不妨嘗試綜合你學到的知識完成一個實際的項目:
第一天:熟悉一種 IDE(5 小時): IDE 是你在編寫大型項目時的操作環境,所以你需要精通一個 IDE。在軟體開發的初期,我建議你在 VS code 中安裝 Python 擴展或使用 Jupyter notebook。
第二天:Github(6 小時):探索 Github,並創建一個代碼倉庫。嘗試提交(Commit)、查看變更(Diff)和上推(Push)你的代碼。另外,還要學習如何利用分支工作,如何合併(merge)不同分支以及如何在一個項目中創建拉取請求(pull request)。
第三天:第一個項目——簡單計算器(4 小時):熟悉 Tkinter,創建一個簡單的計算器
第四、五、六天:個人項目(每天 5 小時):選定一個項目並完成它。如果你不知道你該做什麼,可以查看下面的清單( pythonprojects -for-an- middle – programmer/answer/jhankar – mahbub2)
第七天:託管項目(5 小時):學習使用伺服器和 hosting 服務來託管你的項目。創建一個 Heroku 設置並部署你構建的應用程序。
為什麼要寫項目?
如果僅僅按部就班地學習課堂上或視頻中的內容,你無法擁有獨立思考能力。所以,你必須把你的知識應用到一個項目中。當你努力尋找答案時,你也在慢慢地學會這些知識。
第三周:讓自己成為一名程序員
第 3 周的目標是熟悉軟體開發的整體過程。你不需要掌握所有的知識,但是你應該知道一些常識,因為它們會影響你的日常工作。
第一天:資料庫基礎(6 小時):基本 SQL 查詢(創建表、選擇、Where 查詢、更新)、SQL 函數(Avg、Max、Count)、關係資料庫(規範化)、內連接、外連接等
第二天:使用 Python 資料庫(5 小時):利用一種資料庫框架(SQLite 或 panda),連接到一個資料庫,在多個表中創建並插入數據,再從表中讀取數據。
第三天:API(5 小時):如何調用 API。學習 JSON、微服務(micro-service)以及表現層應用程序轉換應用程序介面(Rest API)。
第四天:Numpy(4 小時):熟悉 Numpy(- Numpy -for- datascies-beginners-b8088722309f)並練習前 30 個 Numpy 習題(- 100/blob/master/100_numpy_excercises.md)
第五、六天:作品集網站(一天 5 小時):學習 Django,使用 Django 構建一個作品集網站(- start-with-django -1/),也要了解一下 Flask 框架。
第七天:單元測試、日誌、調試(5 小時):學習單元測試(PyTest),如何設置和查看日誌,以及使用斷點調試。
真心話時間(絕密)
如果你非常「瘋狂」,並且非常專註,你可以在一個月內完成這些任務。你必須做到:
把學習 Python 作為你的全職活動。你需要從早上 8 點開始學習,一直到下午 5 點。在此期間,你可以有一個午休時間和茶歇時間(共 1 小時)。
8 點列出你今天要學的東西,然後花一個小時複習和練習你昨天學過的東西。
從 9 點到 12 點:開始學習,並進行少量練習。在午飯後,你需要加大練習量,如果你卡在某個問題上,可以在網上搜索解決方案。
嚴格保持每天 4-5 小時的學習時間和 2-3 小時的練習時間(每周最多可以休息一天)。
你的朋友可能會認為你瘋了。走自己的路,讓別人去說吧!
如果你有一份全職工作,或者你是一名學生,完成這些流程可能需要更長的時間。作為一名全日制學生,我花了 8 個月的時間來完成這份清單。現在我是一名高級開發人員。所以,不管花多長時間,一定要完成它們。要想成功完成一個目標,必須付出百分之百的努力。
第四周:認真考慮工作(實習)問題
第 4 周的目標是認真思考如何才能被錄用。即使你現在不想找工作,你也可以在探索這條道路的過程中學到很多東西。
第一天:準備簡歷(5 小時):製作一份一頁的簡歷。把你的技能總結放在最上面,必須在寫項目的同時附上 Github 鏈接。
第二天:作品集網站(6 小時):寫幾個博客,將它們添加到你之前開發的作品集網站中。
第三天:LinkedIn 簡介(4 小時):創建一個 LinkedIn 個人簡介,把簡歷上的所有內容都放到 LinkedIn 上。
第四天:面試準備(7 小時):準備一些谷歌常見的面試問題,練習白皮書中的 10 個面試編程問題。在 Glassdoor、Careercup 等網站中查看前人遇到的面試問題。
第五天:社交(~小時):走出房門,開始參加聚會、招聘會,與其他開發人員和招聘人員見面。
第六天:工作申請(~小時):搜索「Python Job」,查看 LinkedIn Job 和本地求職網站。選擇 3 個工作崗位並發送工作申請。為每個工作定製你的簡歷。在每個工作要求中找出 2 到 3 件你不知道的事情,並在接下來的 3-4 天里學會它們。
第七天:在拒絕中學習(~小時):每次你被拒絕的時候,找出兩件為了獲得這份工作你應該知道的事情,然後花 4-5 天 的時間來掌握它們。這樣,每次拒絕都會讓你成為更好的開發人員。
Python筆記——’utf-8′ codec can’t decode byte 0xc5 in position 0: invalid continuation byte
在讀取數據時出現如下
‘utf-8’ codec can’t decode byte 0xc5 in position 0: invalid continuation byte
該報錯說明csv文件不是utf-8編碼形式,有兩種方法可以解決。
一種是改變csv文件的編碼,可以用記事本打開csv文件再將其另存為utf-8編碼形式並覆蓋原文件。
另一種方法是先查看csv文件是什麼編碼,我的csv文件為ANSI編碼,然後再添加參數encoding=’ANSI’。
Python筆記之input和變數賦值
在Python中,默認所有正確的語法,包括標點符號都是【英文】,若輸入了中文標點,則會報錯【syntaxError:invalid syntax】(語法錯誤:無效語法)
Print() 列印內容
1. 輸出顯示數字:print(0),結果是0
2. 輸出顯示運算:print(1+1),結果是2
3. 輸出任意內容,只要用單引號’括起來即可:print(‘牛’),結果是牛
4. 若碰到輸出的內容,比如英文里有單引號的,則兩種方法:
4.1 使用雙引號括”起來即可:print(“Let’s go!”),結果是Let’s go!
4.2 使用轉義字元\’: print(‘Let\’s go!’)
5. 若輸出的內容里,需要換行,則有兩種方法:
5.1 需要用到三引號”’括起來即可:print(”’第一行
第二行”’)
結果如下:
第一行
第二行
5.2 使用轉義字元:\n
Print(“第一行\n第二行”)
######延伸########
轉義字元的用法:反斜杠+想要實現的轉義功能首字母
eg:\n: newline 換行
\b: backspace 退格
\r: return 回車
常用的轉義字元總結如下所示:
變數:
命名規範:
• 只能是一個詞;
• 只能包含字母、數字和下劃線;
• 不能以數字開頭;
• 盡量描述包含的數據內容;
• 不要使用python函數名或關鍵字;
賦值符號 = 不是左邊等於右邊的意思,而是把右邊的內容放到左邊的盒子里,盒子也是有容量大小之分的,且有後來者居上的特性;
Eg: a=2 表示將2放到a這個盒子里;
a==2 表示a等於2
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/154088.html