1. 程式人生 > >零基礎python入門:從一個小程式開始

零基礎python入門:從一個小程式開始

一般來說,學習程式設計,都喜歡從講語法開始,這是現行的大多數思路。但是程式語言很多,對應的語法大同小異,雖然在有些應用上有差別,在程式設計思想上有不同,但是最基礎的東西,永遠都是C裡面提到那些,判斷語句,迴圈語句,分支語句等等,拿變數定義來說:

  • C語言: unsigned int num  它是按照資料型別在前,變數名稱在後。也就是說在C語言裡面你指定一個變數,一定要先定義這個變數的資料型別,當然還有儲存形式,這個一般系統會預設處理,只有你需要特殊情況下的儲存時才需要你指定。

  • javaScript等指令碼語言,面對變數的定義就寬泛的多,拿js來說: var num 它並不關心變數的資料型別,因為這些,編譯器和系統已經為你處理了。

  • python 定義變數就更自由了,你什麼時候需要,就什麼時候定義。你可能很難理解這句話,不過我們從一個小程式開始,一步步講講你就會明白了。

所以我覺得我們可以省去那些基礎的學習過程,當然這不是說這些基礎不重要,恰恰相反,正是因為他們太重要了,所以不能讓你一次都學完,如果一股腦的學習完的話,按照人的記憶曲線來說,不到半個月,你將忘記大部分的內容,所以不如我們通過一個個的小程式來學習這些語法,這樣更有助於你更好的掌握。

第一個小程式:製作一個縮圖。

女神的圖片太多了,硬碟存不下了,女朋友的照片想要製作一個相簿,需要改變尺寸。我想起我一位朋友,猶豫要製作海報,需要把大概幾百張圖片縮小,這看起來是一件很容易的事情,但是一張圖片花費三到四分鐘的話,算下來,他需要將近一天的時間,這還是在他速度比較快的情況下,要知道人可不是機器,不可能恆定的勞動。無奈之下,他只能找到舍友,幾個人話費了大半天才完成,時候還要請大家好好吃一頓。如果那個時候,他會下面的程式,估計就省心多了。

這是一張200 * 200 的原圖:

我想把它變成100*100的圖片,該如何操作呢?

新建一個檔案,開始敲入程式碼:

  • 為了改變圖片的尺寸,我們首先要獲得圖片的使用權,然後改變它的尺寸,最後將改變尺寸的圖片再儲存為另一張圖片。程式碼如下:

程式碼中是如何獲得圖片的使用權呢?
img = Image.open("photo/img.jpeg") 
通過這個語句我們就獲得了圖片的使用權,那我們來具體解釋一下。img 就是變數,我們獲得圖片的使用權,也就是拿到圖片的控制代碼,或者說是拿到使用資料的鑰匙,這需要儲存在一個容器裡面,這就是變數的意義。
Image是什麼呢?你可以理解為這是一個工具,它是專門用來操作圖片的,它從哪裡來的呢?這就是最開始的那一句:
from PIL import Image
from很好理解,從哪裡得來的意思,PIL是影象處理的包名稱,它裡面集成了大量類似Image這樣的工具,這樣說並不準確,但是卻更容易理解。
w , h = img.size
這句話是為了獲得圖片的寬和高。在pthon中變數就是這麼自由,當你需要寬和高的時候,想去呼叫img.size,它會返回兩個數值,你需要儲存起來,那就定義w,h。這種方式在go語言裡面也是一樣的。
下一步就是改變尺寸了,縮圖也就是改變圖片的寬和高,那麼呼叫一下
img.thumbnail((w/2,h/2))
thumbnail一看就是縮略的意思,傳進去的引數,就是我們想要的100*100.當然你也可以這樣寫:
size = (w/2,h/2)
img.thumbnail(size)
這裡要注意一下,size是(w/2,h/2)這個整體,這種資料格式叫作“元組”,故名思義,這種格式是為了更好的代表資料的核心,用來區分不同的資料,所以元組裡面的資料是不能更改的。
元組的用法很簡單,當你需要一組資料像一個整體一樣代表一個意義時候,就可以定義,比如這個例子,(w/2,h/2)就是(100,100),這就是圖片的尺寸。元組用小括號定義:
size = (100,100)這就是一個元組。元組還有很多有趣的用法。
例如:
你想知道這張圖片的高是多少,但不關心寬。你可以這樣:
h = size[1] 這樣就獲得了高,記住元組是從0開始計數的,基本上在程式設計裡面,數的計算都是從0開始數。
此外 h = size[-1] 也可以獲得正確的值,也就是說元組支援逆序查詢。
如果num = (0,1,2,3,4)
你只想獲得後三個,你可以這樣:
num_last_3 = num[1:]
這樣就會從1開始擷取。這麼看來元組是不是很可愛。
此外元組還有一些自帶的函式:

  • cmp(tuple1, tuple2)比較兩個元組元素。

  • len(tuple)計算元組元素個數。

  • max(tuple)返回元組中元素最大值。

  • min(tuple)返回元組中元素最小值。

  • tuple(seq)將列表轉換為元組。

好了,我們執行下程式,還記得怎麼執行吧?把檔案儲存為.py結尾,然後在命令列進入到該文字儲存的資料夾下,敲入命令:
python img.py
快去你在程式碼中寫的這句:
img.save("photo/imgthumbnail.jpeg","jpeg")下看看,女神的頭像是不是變小了。記住圖片路徑要寫全

如果你執行時候出現找不到PIL 模組,你需要安裝一下這個模組,不過現在由於這個模組已經無人維護,所以你可以按轉pillow,它同樣包含了PIL。
我是使用的homwbrew進行的安裝,你也可以嘗試pip安裝。