Python學習——自己編寫的一段小代碼
理想三旬
濃煙下的詩歌電台
陳鴻宇
00:00/03:30
理想三旬 一旬過往 一旬迷惘 一旬長路
走過三旬 亦是少年
最近在朋友圈中看到一段話,一個人做某件事的時候真的是被年齡限制的嗎?7歲學跳舞,10歲學古箏,大多不情不願,反而30歲願意拿起來的人,卻是發自內心的體會其中的快樂。現實與理想的差距很大,但是正因如此,那些深陷泥沼的人,願意去嘗試一下,也算難能可貴。
Python學習——自己編寫的一段小代碼
計算機環境:
win10操作系統
pycharm工具
python 3.5.2
之前都是看著教程,抄寫代碼運行,今天嘗試了一下自己編寫代碼,結果證明還是有用的,平時抄無數遍代碼不如自己手寫一段代碼,因為只有自己寫代碼才會發現其實自己寫的時候真的有很多的漏洞,這也是對代碼語句理解不夠到位造成的。今天編寫的是一段排序代碼。常用的排序演算法像C語言中學到的冒泡排序,插隊排序等,下面提供一種偶然間想到的排序方式,雖然不知道這種方式已經有正式的名稱了。
思路:
我們對一個有限個正整數數組(無重複)a[n]進行從小到大全排列,那麼可以建立一個有限長的數組b[m](注意這個數組的長度要大於等於需要排序的數組a[n]中最大數的數組),然後將a[n]中的數放進b[m]中,即b[a[n]],然後其餘b[m]置0,這樣就可以在b[m]中將a[n]進行從小到大的排列,構造新數組c[x]將b[m]中非零數輸出即可,所構造的c[x]即為對a[n]的按從大到小排列後的結果。
代碼展示如下:
實際上我們在此構造了一個排序函數「waterorder」,我們運行一下代碼看看運行結果:
運行結果:
從結果上看,我們得到了我們需要的答案,至少將輸入的數組進行從小到大的順序進行了排序。
分析:
優點——思路簡單
缺點——適用範圍太窄,需要人為的設置數組長度,同時佔用資源較多。
思維拓展:
1. 我們通過b = list(range(i))構造的數組b,在未賦值之前數組的初值是多少?
我們可以嘗試一下,構造一個長度為10的數組,然後不賦值直接列印:
運行結果:
我們發現原來是這樣去賦值的,記得這個問題在學習C語言的時候也探討過,可能二者的賦值機制是不一樣的,這個今後有機會再探索探索。但是這樣也反映了一點,我們構造的數組是有初值的,在未給其賦上初值之前隨意調用有可能會出錯。
2. 既然我們已經構造好了一個函數,那麼我們能不能在另一個python文件中調用它?
可以來嘗試一下,一般python可以通過import的方式來導入相關的庫,按理說waterorder.py這個python文件也可以通過import方式導入,先試一下我們新建的test.py文件和waterorder.py文件不在一個文件夾下面時可不可以直接調用:
調用結果:代碼提示紅色顯示有報錯
其他的庫我們都可以不用放在一個文件夾下面就能導入,這是因為我們設置了環境變數,那麼把waterorder.py放在python文件安裝位置下看看還會不會報錯:
查看結果:此時已經不報錯了。
因為waterorder.py這個文件是我自己寫的,如果以後有一樣的文件我都放在python安裝包下,如果出現重名(現在是瞎起名)就麻煩了,所以還是把他們放在一個文件夾下面,應該也不會報錯,可以正常調用:
查看結果:沒有報錯。
好了,那麼此時我們在test.py中調用一下:
但是運行後發現有報錯:
經過上網查詢,這個錯誤實際上與import的導入機制有關係:
import的導入方式有兩種,import module 和 from module import,區別是前者所有導入的東西使用時需加上模塊名的限定,而後者不要。
或者我將waterorder.py修改為Waterorder.py更明顯一點:
正確代碼如下:
運行結果:
另一種調用方式:這種方式表示調用Waterorder庫中的waterorder方法。
結果如下:
另外也可以:這種方式表示調用整個Waterorder庫中的所有方法,因為該庫中就一個waterorder方法,所以也就是只調用該方法。
顯然,就我感覺而言第二種調用方法跟簡單靈活,平時應該更常用一些。經過以上的摸索,感覺自己以後完全可以寫一個庫出來,很牛逼有沒有?
生而有涯,學海無涯,繼續努力!
每日一語
我生如浮萍,人生如逆旅。
——走夜路的貓
每天都要進步一點!共勉!
※史上最全的Python數據分析工具:Notebook教程
※小白Python編程從入門到實踐——創建數值列表
TAG:Python |