MicroPython 常用型別

MicroPython 幾乎延續所有Python 程式的精神,已經熟悉Python 程式變數與流程的讀者可以跳過這一個章節。若讀者沒有Python 程式的基礎,而是直接從MicroPython 為程式基礎,讀完這一段文章就能處理多數在Micro:bit 上的程式需求。

MicroPython 中最重要的型別和Python 一樣是串列型別,串列型別是用中括號 "[]" 來定義,格式如下:

變數名稱 = [元素1, 元素2, ...,元素n]

例如:

a = [1, 2, 3]

a 是變數名稱,因為其內容是用"[]" 來放置,所以Python 知道a 是一個串列型別。串列型別是一個有序的型別,所以我們可以用index 來提取此串列內部的元素。在Python 中的index 和C 語言一樣都是從0 開始。所以,a[0] = 3,a[1] = 2, a[2] = 3。

在MicroPython 的應用我們有時會把已經定義好的圖像或是音樂變成一個串列的形式,這樣就可以讓影像播放函數或是聲音播放函數可以依序播放它。例如:

from microbit import *

ImgList = [Image.HAPPY, Image.SAD, Image.CONFUSE]

display.show(ImgList, delay=2000)

這樣程式就會依序以間格2 秒的方式播放這三張圖像。

 

MicroPython 第二個常用的型別是字串,一個字串會用'' 或是"" 符號來定義。例如:a = 'Hello World!' 就是一個長度為12 的字串,b = '123' 是一個長度是3 的字串。字串也是一個有續的型別,所以a[0] = 'H',b[1] = '2'。當有些函數的輸入直為字串時,我們要特別留意。例如:

display.show(3)

會出現錯誤訊息,我們需要把他改成:

display.show('3')

或是

display.show(str(3))

才行,這裡的str() 函數,是把物件變成字串的函數。

range() 在Python 3.x 版後也變成一個獨立的型別,多半出現在流程控制上。早期的range() 會產生一個串列物件,可說是快速產生串列的方法,但因為在長度太長時控制流程使用到range() 會讓速度變慢,所以在Python 3.x 版本之後特別改良其在流程控制中的速度,並獨立成一個新的型別。其格式如下:

變數名稱 = range(起始值,結束上界,公差)

例如:a = range(2,21,2),會做出一個有序的range()物件,其值為2, 4, 6, 8, 10, 12, 14, 16, 18, 20。若起始值為0 我們可以把起始值省略,若公差是1 我們也可以省略。因此,a = range(5) 就是 0, 1, 2, 3, 4,a = range(1,6) 會被視為是公差為1 的省略,亦即1, 2, 3, 4, 5。