初窺Python門縫了解入門路徑
此之謂入門,其標準是,在不計效率的情況下,可以使用這門語言實現(xiàn)一個不太復(fù)雜的功能。
當然,這個不計效率也不是毫無原則的不計,比如我可以1小時搞定,那么剛?cè)腴T的新手需要1天甚至2天,他將需要大量的時間去查庫查類查函數(shù),但絕不至于用上一周半周的。
我從來都沒學(xué)過python,當年只是受夠了Matlab,而想把一個用Matlab寫的類轉(zhuǎn)成其他語言,結(jié)果用了一周,就把一個涵蓋圖像處理、數(shù)據(jù)擬合等功能的一千來行Matlab代碼順利轉(zhuǎn)成了Python。過了沒幾年,Matlab就對我們禁用了,可見當年的選擇是極為英明的。
那么如今讓我重寫一遍那個類,大概只需要一天不到。這就是新手和老手的區(qū)別,但也僅僅是新手和老手的區(qū)別。
從入門到熟練運用,需要的不是什么思維的提升,而僅僅是是一個字——用,或者更直觀地說,就是看代碼量。從這個意義上來說,越快入門,就可以更早地堆積代碼量,從而更早地熟練運用Python,而不是按部就班地從入門到放棄。學(xué)習(xí)編程最可怕的事情就是:每天寫一遍Hello World并感覺收獲滿滿。
接下來,快速入門Python。
1 環(huán)境配置與基本運算
正所謂天下武功、唯快不破。學(xué)Python,講求的就是一個快字。
盡管下載Python并安裝并不麻煩,但新手往往會在使用過程中出現(xiàn)各種讓人費解的問題。所以,如果想1小時入門,我推薦這個。
在線Jupyter編輯工具,進入之后,點擊中間的Try JupyterLab
,就可以進入在線Notebook的界面。
點擊Python3,快速進入jupyter notebook的環(huán)境。然后按照直覺,寫一些四則運算表達式,例如這些:
x = 100 y = 50 z = 2.5 print(x + y * z) print(x - y / z) print(x * y**2)
然后同時按下Ctrl
+回車
,就能運行python代碼。
然后按下alt
+回車
,開啟下一段代碼。
如果用shift
+回車
,則會綜合上面的兩個功能,本節(jié)耗時:3分鐘。
如果覺得在線Jupyter工具不好用,還有這個ideone,進入之后選擇python
,輸完代碼后選擇run
。
2 調(diào)用各種包
在python中,通過import
來完成包的調(diào)用。例如,我想調(diào)用一個日歷的包,然后打印日歷
import calendar calendar.prcal(2021,m=4) #2021年,每行4個月
然后shift
+回車
,就可以看到日歷了。
如果想通過python進行科學(xué)計算,應(yīng)用最多的包是numpy
和matplotlib
中的pyplot
,前者用于計算,后者用于繪圖。通常二者被重命名為np
和plt
。接下來演示一下二者的用法。
import numpy as np from matplotlib import pyplot as plt x = np.random.rand(100) #python中通過#進行注釋 y = np.random.rand(100) #用于生成100個隨機數(shù) plt.scatter(x,y) #繪制散點圖,并存放在內(nèi)存 plt.show() #調(diào)用內(nèi)存中的圖,show給我們
本節(jié)需要記住的單詞
:import
、as
、numpy
、matplotlib.pyplot
、random.rand
、scatter
、plt.show
。
本節(jié)耗時:5分鐘。
3 判斷、循環(huán)
如果想統(tǒng)計剛剛新建的x
和y
中,有多少大于0.5,那么方法很簡單,:新建兩個變量用于存儲二者的個數(shù),然后跑一個循環(huán)進行判斷。
xNum = 0 yNum = 0 for i in range(100): if x[i]>0.5:xNum += 1 # xNum += 1 即 xNum = xNum + 1 if y[i]>0.5:yNum += 1 # python中通過方括號進行索引 print(xNum,yNum)
可以把range(100)
理解為0到99這100個數(shù)組成的一個集合,for i in range(100)
意味著i
對這個集合進行遍歷,遍歷就是逐個復(fù)制給i,所以就完成了循環(huán)。
在python中,判斷、循環(huán)結(jié)構(gòu)通過:
與其內(nèi)容進行分隔,且子代碼塊需要通過空格進行標記。如果程序塊中只有一行代碼,則可以直接寫在:
后面。
如果想知道,x
中處于 ( 0 , 0.3 ] , ( 0.3 , 0.6 ] , ( 0.6 , 1 ] (0,0.3],(0.3,0.6],(0.6,1] (0,0.3],(0.3,0.6],(0.6,1]這三個區(qū)間的數(shù)分別是多少,則需要用到if..elif
n1,n2,n3 = 0,0,0 #按照直覺理解即可 for i in x: if i>0.6 : n3 += 1 elif i>0.3 : n2 += 1 else: n1 += 1 print(n1,n2,n3)
for..in
的作用是遍歷某個集合,而x
本身也是一個集合,所以也可以接受遍歷。
本節(jié)需要記住的單詞
:if, else, elif, for, +=,
,耗時5分鐘。
4 函數(shù)
如果想反復(fù)統(tǒng)計一組隨機數(shù)的分布情況,顯然不能每次都寫一遍那么老長的代碼,而是應(yīng)該把代碼封裝到一個函數(shù)里面。
def statis(x): xNum = 0 for i in x: if i>0.5: xNum += 1 return xNum
在Python中,通過def
新建一個函數(shù),函數(shù)名字后的括號里是這個函數(shù)需要輸入的變量。最后通過return
來返回一個值。如果按照數(shù)學(xué)的那種表達式,以上代碼差不多類似xNum=statis(x)這樣的感覺。
在建了一個函數(shù)之后,就可以調(diào)用了,本節(jié)用時5分鐘,需要記住def
和return
。
5 數(shù)據(jù)結(jié)構(gòu)
我們剛剛說x
是集合,這是不準確的。數(shù)學(xué)上的集合要求不能有重復(fù)元素,但x是隨機生成的一個數(shù)組,所以并不能保證這一點。
在本節(jié),我們要弄懂python中最常用的5種數(shù)據(jù)結(jié)構(gòu):元組、列表、字典、集合、數(shù)組,同時要掌握python推導(dǎo)式,預(yù)計耗時15分鐘。
tpl = (1,2,3,4) #此為元組tuple lst = [1,2,3,4,5] #此為列表list dct = {"a":1, "b":2, "c":3} #此為字典dict st = {1,2,3,3} #此為集合 arr = np.array([1,2,3,4]) #此為數(shù)組
可以看到,盡管我們在新建集合的時候給了1,2,3,3
,但集合中沒有重復(fù)元素,所以只剩下一個3。
一句話區(qū)分這五種類型:
- 只有數(shù)組
np.array
可以計算 - 字典通過
鍵值對
(key-value)進行索引 - 集合無重復(fù)元素,且不可索引
- 元組可以作為字典的鍵,列表則不能。
這五種數(shù)據(jù)類型的詳細區(qū)別如下(這個其實用不著記)。
索引方式 | 可計算 | 可哈希 | 元素可重復(fù) | 指針式 | |
---|---|---|---|---|---|
tuple | tpl[0] |
❌ | ✅ | ✅ | * |
list | lst[0] |
❌ | ❌ | ✅ | * |
dict | dct["a"] |
❌ | ❌ | ❌ | ** |
set | ❌ | ❌ | ❌ | ❌ | * |
np.array | arr[0] |
✅ | ❌ | ✅ | ❌ |
其中,可哈希暫時可理解為能夠作為字典的key。
所謂指針式
是我亂取的一個名字,意思是可以像指針一樣把元素取出來。其中,集合與字典因為元素不可重復(fù),所以并沒有什么變化。
至于可計算就比較容易理解了,例如+
測試,字典和集合干脆就報錯了,而元組、列表將+
重載為合并,只有arr
執(zhí)行了加法操作。
在python中,可通過len
來獲取這些數(shù)據(jù)結(jié)構(gòu)的長度。
6 字符串
在字典中我們其實已經(jīng)用過了字符串,在python中,用單引號或雙引號來代表字符串,二者是等價的。
x = 'abc' y = "abc" print(x==y)
因為引號被用于字符串的標志,所以如果想在字符串中輸入引號,則需要轉(zhuǎn)義,轉(zhuǎn)移符號為\
。又因為\
用于轉(zhuǎn)義,所以\
也需要轉(zhuǎn)義。
print('\'') print('\\') print("\"")
7 回到本地
如果下載之后,可通過win
+r
,輸入cmd
進入命令行,輸入python
進入python環(huán)境。
如果下載的是python,則通過pip isntall numpy
安裝numpy
,總之其命令格式為pip install XXX
;如果下載的是anacoda,則還可以通過conda install numpy
來進行安裝——當然,anaconda的基本環(huán)境已經(jīng)安裝了大部分常用包。
如果把python的代碼封裝到一個.py
格式的文件中,然后就可以通過python XX.py
進行調(diào)用,并執(zhí)行。
8 命令行版2048小游戲
按理說看到這里,并寫到這里,就應(yīng)該算是完成了入門,那么接下來就要用入門學(xué)會的知識,寫一個命令行版的2048小游戲。
2048的邏輯無非是操作4x4
的方格,每個方格中有一個數(shù),我們可以操作這些數(shù)字進行移動,如果兩個相同的數(shù)字在我們的操作下相撞了,那么它們就可以合并了。
而這個4x4
的方格,無非是一個矩陣。
我們的操作可以理解為輸入字符,用wsad
代表上下左右,y
代表確定,n
代表取消。
python接收字符的函數(shù)是input
,例如
>>> x = input("input a number") input a number5 >>> x '5'
而創(chuàng)建矩陣,可以用np.zeros([4,4]).astype(int)
,表示創(chuàng)建一個 4 × 4 4\times4 4×4的全0矩陣,并化為整形。
矩陣中只有16個元素,盡管循環(huán)效率低下,但足以滿足人的操作速度了。
如果讀者從頭到尾敲了所有的代碼,那么如今必然有能力獨立寫出這樣的程序。所以具體的代碼將在下篇文章給出。
到此這篇關(guān)于初窺Python門縫了解入門路徑的文章就介紹到這了,更多相關(guān)Python 入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows下實現(xiàn)pytorch環(huán)境搭建
這篇文章主要介紹了Windows下實現(xiàn)pytorch環(huán)境搭建,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Python并發(fā)編程多進程,多線程及GIL全局解釋器鎖
這篇文章主要介紹了Python并發(fā)編程多進程,多線程及GIL全局解釋器鎖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-07-07Python實現(xiàn)字符型圖片驗證碼識別完整過程詳解
這篇文章主要介紹了Python實現(xiàn)字符型圖片驗證碼識別完整過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05