Python 是跨作業系統的直譯式程式語言,當程式執行時,才將程式語言翻譯成執行碼後執行。

(Python LOGO)

1. Python 程式語言的介紹

Python 程式語言之所以廣受歡迎,是因為它的程式語言全部都是公開程式碼,只要用文書軟體打開程式碼,就可以對它的設計一目瞭然並瞭解它是如何執行的。

以下透過幾個實際範例可瞭解如何撰寫和使用 Python 程式語言,且市面上大多數的 Raspberry Pi 的軟體和控制 GPIO 周邊,幾乎都是用 Python 程式語言開發,所以想學好 Raspberry Pi 時,一定也要瞭解 Python 程式語言。

Python 的設計哲學是「優雅」、「明確」、「簡單」,因此 Python 的格言為" There is only one way to do it “,意思是利用 Python 寫程式,達成一種目的只會有一種寫法(其實是盡可能只有一種寫法),已符合「簡單」的設計哲學。

安裝前要先更新 apt-get 系統安裝程式。

$sudo apt-get update
$sudo apt-get upgrade

Raspberry Pi 基本上都有安裝過 Python,但還是確定一下機器是否已確實安裝,沒有的話請執行下面的指令安裝。

$sudo apt-get install python2.7

Python 的執行方法分成兩種,以下分別介紹。

(方法一)

在文字模式 Terminal 下,直接依照下列的指令執行。進入 Python 的編輯模式。(圖1)

$python

進入 Python 編輯模式之後,試著寫寫簡單的程式。

>>>print(“hello world, powenko")

程式解說
透過 print 函數可以列印括號內的文字。

執行結果
(圖2)

如果要離開 Python 程式,按下鍵盤的 Ctrl + Z 就可以離開。

此方法可以很簡單的撰寫 Python 程式,但是如果程式很長或是需要測試、撰寫和修改的話,這個方法就不適合。

(方法二)

第二個方法是透過文字編及工具,先把程式寫在純文字檔案中,到時候再個告訴 Python 解釋器去讀取這個文字檔案並執行。

把剛剛的程式透過文字軟體 nano,重新輸入一次。

$sudo nano mycode.py

在這個文字軟體中,輸入以下的程式。

print(“see you again, powenko")

透過按下鍵盤的 Ctrl + O 和 Enter 儲存程式,並透過鍵盤的 Ctrl + X 和 Enter 離開文字編輯軟體 nano。(圖3)

(圖3)在文字軟體 nano 寫程式

回到文字模式 Terminal 下,直接依照下列的指令編輯和執行 Python 的程式。

$ sudo python mycode.py

執行結果
(圖4)

2. Python 程式語言教學

大多數的 Raspberry Pi 都是用 Python 程式語言在控制 GPIO 週邊,為方便在撰寫 Raspberry Pi 時更得心應手,以下會介紹

在 Python 的程式語言之中,資料如果以變數加以儲存,可以透過 Python 程式語言中的數學計算處理。

Python 的資料處理基本單位為「變數」,在類別內的變數將視為是一種該類別的欄位;而在方法內宣告的變數,則視為是該區域的變數(local Variables)。

特別的是 Python 的變數,宣告時不用特定指定資料型態,就會以第一次使用儲存的資料為內定的資料型態。

語法

變數名=初始值

參數

返回值

範例程式

程式解說

執行結果
(圖)

Python 對數學的運算處理方法,跟一般的C語言相同,可以先透過下面的範例圖表來瞭解。

(圖)

範例程式

程式解說

執行結果
(圖)

陣列在程式語言之中,是一種相同資料型態一直重複的資料結構,它可以讓程式碼表現更為簡單,開發速度更快,Python 語言也像其他的程式語言一樣提供了陣列。陣列是一組相同型態的連續變數,它們使用同一個變數名稱,而另外用一個索引值來指定使用第幾個變數。由於陣列元素的方便性,使得大多數的程式語言中,都可以看到陣列的功能。

陣列是一個連續、相同的資料型態放在連續的記憶體空間,並且可以用連續空間來加以存放。

變數 =[‘字串’,’字串’,…..]

範例程式

a=[‘Apple’, ‘Watermelon’, ‘Banana’]
print a[1]

執行結果

Watermelon

變數 =[數字,數字,…..]

範例程式

a=[123,456,789]
print [1]

執行結果

456

二維矩陣的寫法

變數 =[[數字,數字,…..], [數字,數字,…..],…]

範例程式

a=[ [11,22,33],
   [44,55,66],
   [77,88,99] ]
print a[1] [0]

執行結果

44

if (條件判斷語句)和 ==、!、<、> (比較運算子)

if 語句與比較運算子一起用於檢測某個條件是否達成,如某輸入值是否在特定值之上…等。

if 語句的語法是:

if 某變數 > 20:
    //如果符合此判斷的話,要做的事情

本程式測試某變數的值是否大於20。當大於20時,執行一些動作。

換句話說,只要 if 後面括弧的結果(稱之為測試運算式)為真,則執行下一個段行的語句(稱之為執行語句法);若為假,則跳過。

語法1

if 條件判斷語句:
   //要做的事情1

語法2

if 條件判斷語句:
   //要做的事情1
else:
   //要做的事情2

語法3

if 條件判斷語句1:
   //要做的事情1
else 條件判斷語句2:
   //要做的事情2
else:
   //其他要做的事情

  • 注意
    Python 的 else if 是寫成 elif。
    Python 沒有{},是透過空白行數來判斷。

參數

條件判斷語句:
在小括弧裡求值的運算市,需要以下操作:

x==y (x 等於 y)
x!=y (x 不等於 y)
x < y (x 小於 y)
x > y (x 大於 y)
x<=y (x 小於等於 y)
x>=y (x 大於等於 y)

返回值

函數返回值為 boolean 布林型,就是只有 true(對)和 false(錯),這二個答案。

使用範例

以下的範例,就是判斷變數是否符合判斷式的條件。

範例程式

程式解說

執行結果
(圖)

補充資料

Python 沒有 switch,可以透過 if…elif…elif 來達到同樣的效果,例如

程式解說

在 Python 的迴圈中常會用到一個叫做 range 範圍的寫法。因此在介紹迴圈的處理之前,先介紹什麼是 range。

range (範圍)

該函數是建立範圍的動作。

範圍:整數值

範例程式

a=range(10)
print(a)

執行結果

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

range (範圍開始, 範圍結束)

該函數是建立範圍的動作。

範圍開始:整數值
範圍結束:整數值

範例程式

a=range(2,6)
print(a)

執行結果

[2, 3, 4, 5]

range (範圍開始, 範圍結束, 每次相差)

該函數是建立範圍的動作。

範圍開始:整數值
範圍結束:整數值
每次相差:整數值

範例程式1:

a=range(6,0,-2)
print(a)

執行結果

[6, 4, 2]

在 Python 的程式語言之中,迴圈有自己的一套寫法,跟一般的C語言有些不一樣,可以透過下面的程式範例來瞭解。

for 語句用於重複執行一段程式,而程式是放在大括號之內的程式碼,但 Python 是沒有大括號的,它是透過空白來代替,所以同一個範圍內的程式,前面都要有相同的空白行數,代表是{ …}之中的動作,for 語句用於重複性的操作非常有效,通常與陣列結合使用來運算數據。

for 變數 in range (範圍)

該函數是建立迴圈的動作。

變數:整數變數名稱
範圍:整數值

範例程式

for x in range(10):
   print x
print “end"

執行結果

0
1
2
3
4
5
6
7
8
9
end

for 變數 in range (範圍開始, 範圍結束)

該函數是建立迴圈的動作。

變數:整數變數名稱
範圍開始:整數值
範圍結束:整數值

範例程式

for x in range(2,6):
   print x
print “end"

執行結果

2
3
4
5
end
for 變數 in range (範圍開始, 範圍結束, 每次相差)

該函數是建立迴圈的動作。

變數:整數變數名稱
範圍開始:整數值
範圍結束:整數值
每次相差:整數值

範例程式1

for x in range(0,6,2):
   print x
print “end"

執行結果

2
3
4
5
end

範例程式2

for x in range(6,0,-2):
   print x
print “end"

執行結果

6
4
2
end

for 變數 in 矩陣

該函數是建立迴圈的動作。

變數:整數變數名稱
矩陣:矩陣字串
範例程式

a=[‘Apple’, ‘Watermelon’, ‘Banana’]
for x in a:
print x
print “end"

執行結果

Apple
Watermelon
Banana
end

使用範例

九九乘法的撰寫方法。

範例程式

程式解說

執行結果
(圖)

範例程式

程式解說

執行結果
(圖)

While 語句用於重複執行一段程式,而程式是放在相同空白行數的程式碼,While 迴圈會無限的循環,值到括弧內的判斷式為否,在迴圈中要做的事情之一,是必須要有能改變判斷語句的程式,要不然 While 迴圈將永遠不會結束。

語法

While 判斷的條件:
   //要做的事情

參數

判斷的條件就像是 if 的寫法一樣,如果符合的話就會執行一次,直到不符合判斷的條件,才會離開。

While 判斷式

該函數是建立迴圈的動作。

判斷式;同條件判斷語句

範例程式1

x=0
While x<5:
   print x
   x=x+1
print “end"

執行結果
0
1
2
3
4
end

範例程式2

x=0
While x<20:
   print x
   x=x+5
print “end"

執行結果
0
5
10
15
20
end

以下的範例,就是 While 判斷變數是否符合判斷式的條件。

範例程式3

執行結果
(圖)

Python 沒有 do…while 的寫法。

Python 的函數寫法非常的特別,在此特別提出來說明。

語法

def 函數名稱(參數)
  要做的事情
  return 回傳值

def 函數名稱():

建立函數的動作。

使用範例

設計一個函數叫做 fun1,並在程式中呼叫該函數。

範例程式

def fun1():
   print “this is function1″

fun()

執行結果

this is function1

def 函數名稱(參數)

建立函數的動作,並代參數進入函數中。

使用範例

設計一個函數叫做 fun2,並且在程式中呼叫該函數。

範例程式

def fun2 (num):
   print “this is function2="+str(num);

fun2 (100)

執行結果

this is function2=100

回傳值=def 函數名稱(參數)

建立函數的動作,並代參數進入函數中,並且回傳資料。

使用範例

設計一個函數叫做 fun3,並在程式中呼叫該函數。

範例程式

def fun3(num1,num2):
   print “this is function3″;
   return num1+num2

print fun3(1,2)

執行結果

this is function3
3

以下的範例,是透過函數的設計,來計算與顯示九九乘法表。

範例程式

執行結果
(圖)