MicroPython中基本的資料類型有Number(數位)、String(字串)、List(清單)、Tuple(元組)、Dictionary(字典)等。
用type()可以查看變數和常量的資料類型。
示例:
>>> a1 = 23
>>> print(type(a1))
<class 'int'>
>>> a, b, c, d=20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
>>>
>>> l, t, s = [3,2,5], (1,3,4), {'tom':4, 'jerry':6, 'seiya':25}
>>> print(type(l), type(t), type(s))
<class 'list'> <class 'tuple'> <class 'dict'>
1.2.2.1 Number(數字)
MicroPython支持 int、float、bool、complex(複數)。
當定義一個變數時,Number 物件被創建。
示例:
>>> var1 = 2
>>> var2 = 6
創建的Number物件,可以通過del語句進行刪除。
示例:
del var
del var_a, var_b
注意:
1、可以同時為多個變數賦值,如a, b = 1, 2。
2、數值的除法(/)總是返回一個浮點數,如1/1,結果為1.0。
3、在混合計算時,MicroPython會把整型轉換成為浮點型。
int(整型)
MicroPython可以處理任意大小的整數(包括負整數),整數的表示方法和數學上的寫法一樣,如
1,100,-8080,0 ,……
MicroPython中用十六進位表示整數,如下
0xff00,0xa5b3c3d2,……
float(浮點型)
浮點數就是小數。按科學計數法表示時,浮點數的小數點是可變的,如1.23×10^9和12.3×10^8是相等的。可以把10用e替代,1.23×10^9就是1.23e9,或是12.3e8,0.000012可以寫成1.2e-5。
示例:
>>> c1 = 1.34e3
>>> print(c1)
1340.0
>>> c2 = 1.343e-3
>>> print(c2)
0.001343
浮點數和整數在電腦內部存儲方式不同,整數是精確的,而浮點數運算時會有四捨五入的誤差。
bool(布林型)
布林值只有True、False兩種值,非True則False,注意大小寫。
示例:連續輸出4個“hello”
>>> flag = True
>>> num = 4
>>> while flag:
... print("hello")
... num = num-1
... if num == 0:
... flag = False
...
...
...
hello
hello
hello
hello
上述示例中while為一個迴圈語句,當flag為True時,迴圈執行後面的語句,if為一個判斷語句,當num=0成立時,執行下面的語句。在上面示例中要注意if num == 0中的“==”不要寫成“=”。“==”表示判斷是否相等,而“=”表示賦值,例如flag=False表示將False的值賦給flag變數。
注意:
前面講過在uPyCraft交互環境下編寫代碼時,>>>是MicroPython解譯器的提示符,不是代碼的一部分,同樣上面示例中出現的...也是一個提示符,表示待輸入代碼。
complex(複數)
複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a, b)表示, 複數的實部 a 和虛部 b 都可以是浮點型。
示例:
>>> complex(1, 2)
(1+2j)
數位類型轉換
有時候,我們需要對資料內置的類型進行轉換,具體如下
int(x): 將x轉換為一個整數。
float(x): 將x轉換到一個浮點數。
complex(x): 將x轉換到一個複數,實數部分為 x,虛數部分為 0。
complex(x, y) :將 x 和 y 轉換到一個複數,實數部分為 x,虛數部分為 y。x 和 y 是數字運算式。
示例:
>>> a = 1.0
>>> print(int(a)) #float转换成int
1
>>>
>>> x, y = 2.3, 5
>>> c = complex(x, y)
>>> print(c)
(2.3+5j)
1.2.2.2 String(字串)
字串是以"或'括起來的任意文本(如'abc',"xyz")。
注意:
"或'本身只是一種表示方式,不是字串的一部分。因此,字串'abc'只有a,b,c這三個字元。
示例:
>>> str = 'xy,z'
>>> print(str)
xy,z
訪問子字串,可以使用方括號來截取字串。
示例:
>>> str = "Hello World"
>>> print("str[0]:", str[0])
str1[0]: H
>>>
>>> print("str[0:5]:", str[0:5])
str1[0:5]: Hello
你可以截取字串的一部分並與其他字串拼接。
>>> str = "Hello"
>>> print(str[:6] + " DFRobot")
Hello DFRobot
1.2.2.3 List(列表)
列表(list)是MicroPython中最基本的資料結構。清單中的每個元素都分配一個索引,第一個索引是0,第二個是1,依次類推。
在MicroPython中定義清單需要使用方括號,清單中的資料項目都包含在方括號中,資料項目之間使用逗號分隔。
創建列表
(1) 清單中的資料可以是任意資料類型,甚至可以是不同類型的混合。
示例:
>>> li = [1, 2, 'a', "hello"]
>>> print(li)
[1, 2, 'a', 'hello']
(2) 清單中的資料除了基本的資料類型,還可以是其他複雜的資料結構。
示例:
>>> li = [ 1, 2, 'a', [1, 2, 5] ]
>>> print(li)
[1, 2, 'a', [1, 2, 5]]
操作列表
列表創建完成後,可以進行訪問、修改、刪除、插入等操作,即列表是可變的資料類型。
(1) 訪問列表中的值
使用下標索引來訪問清單中的值,同樣也可以使用方括號的形式截取字元。
示例:
>>> li = ['physics', 'chemistry', 1997, 2000]
>>> print("li[0]:", li[0]) #Access the first element of the list.
li[0]: physics
>>> print("li[2]:", li[2])
li[2]: 1997
(2) 修改列表項
可以對列表的資料項目進行修改。
示例:
>>> li = ['physics', 'chemistry', 1997, 2000]
>>> print("li[2]:", li[2])
li[2]: 1997
>>> li[2] = 2003 #修改列表
>>> print("li[2]:", li[2])
li[2]: 2003
>>> print(li)
['physics', 'chemistry', 2003, 2000]
(3) 刪除清單中的元素
可以使用del或pop()函數來刪除清單中指定位置的元素。
示例:
>>> li = ['physics', 'chemistry', 1997, 2000]
>>> print(li)
['physics', 'chemistry', 1997, 2000]
>>> del li[2]
>>> print(li)
['physics', 'chemistry', 2000]
>>> li.pop(1)
'chemistry'
>>> print(li)
['physics', 2000]
(4) 在某一位置插入元素
用 insert(i, x) 函數在位置 i 處插入元素 x,原來 i 位置及其後的元素依次後移,也可以使用append()方法在末尾添加元素。
示例:
>>> li = ['physics', 'chemistry', 1997, 2000]
>>> print(li)
['physics', 'chemistry', 1997, 2000]
>>> li.insert(2, 'hello')
>>> print(li)
['physics', 'chemistry', 'hello', 1997, 2000]
>>>
>>> li = ['physics', 'chemistry', 1997, 2000]
>>> li.append("end")
>>> print(li)
['physics', 'chemistry', 1997, 2000, 'end']
MicroPython列表腳本操作符
MicroPython運算式
結果
描述
len([1,2,3])
3
清單元素個數
[1,2,3]+[4,5,6]
[1,2,3,4,5,6]
多個清單組合成一個清單
['ha!']* 3
['ha!','ha!','ha!']
重複若干個元素組成清單
3 in [1,2,3]
True
判斷元素是否存在於清單中
MicroPython列表截取 有一個列表:li=['hello','DFRobot',2018,1,3]
MicroPython運算式
結果
描述
li[2]
2018
讀取清單中第三個元素
li[-1]
3
讀取清單中倒數第1個元素
li[1:]
['DFRobot', 2018, 1, 3]
截取從第2個元素開始及其後的元素
MicroPython清單操作的函數和方法
一、清單操作包含以下函數:
1、cmp(list1, list2):比較兩個清單的元素
2、len(list):返回清單元素個數
3、max(list):返回清單元素最大值
4、min(list):返回清單元素最小值
5、list(seq):將元組轉換為列表
二、列表操作包含以下方法:
1、list.append(obj):在清單末尾添加新的物件
2、list.count(obj):統計某個元素在清單中出現的次數
3、list.extend(seq):在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
4、list.index(obj):從列表中找出某個值第一個匹配項的索引位置
5、list.insert(index, obj):將對象插入清單
6、list.pop(obj=list[-1]):移除清單中的一個元素(預設最後一個元素),並且返回該元素的值
7、list.remove(obj):移除列表中某個值的第一個匹配項
8、list.reverse():反向清單中元素
9、list.sort([func]):對原列表進行排序
1.2.2.4 Tuple(元組)
元組(tuple)和列表十分類似,只是元組和字串一樣是不可變的,即不能修改元組。正是由於元組不可變,一般用於MicroPython中定義一組不需要改變的值。
在MicroPython中定義元組使用圓括號,元組中的專案同樣使用逗號分隔。
示例:
>>> tu = (1, 2, 4, 'hello')
>>> print(tu)
(1, 2, 4, 'hello')
空的元組由一對空的圓括號組成,比如t1=()。
注意:
定義只有1個元素的元組時,必須要在這個元素後面跟一個逗號。
示例:
>>> a = (1)
>>> type(a)
<class 'int'>
>>> print(a)
1
>>>
>>> tu = (1, )
>>> type(tu)
<class 'tuple'>
>>> print(tu)
(1,)
1.2.2.5 Dictionary(字典)
字典(dict)這種資料結構類似通訊錄,有一個名字和名字對應的資訊,可以通過名字查找對應的資訊,在字典中名字叫‘鍵’,對應的內容叫‘值’。字典就是一個鍵/值對(key/value)的集合。
在MicroPython中定義字典使用花括弧,字典中的鍵/值對之間使用逗號分隔,鍵和值之間用冒號分隔。
示例:
>>> d = {'tom':4, 'jerry':6, 'seiya':25}
>>> print(d)
{'tom': 4, 'jerry': 6, 'seiya': 25}
>>> print(d['jerry'])
6
操作字典
(1) 把數據放入dict
可以直接對單個鍵賦值的方法來將資料放入字典。
>>> d = {'tom':4, 'jerry':6, 'seiya':25}
>>> print(d)
{'tom': 4, 'jerry': 6, 'seiya': 25}
>>> d['panda']=12
>>> print(d)
{'jerry': 6, 'panda': 12, 'seiya': 25, 'tom': 4}
(2) 由於一個key只對應一個value,所以,多次對一個key放入value,後面的值會把前面的值覆蓋。
>>> d = {'tom':4, 'jerry':6, 'seiya':25}
>>> d['panda']=12
>>> print(d)
{'jerry': 6, 'panda': 12, 'seiya': 25, 'tom': 4}
>>> d['panda']=10
>>> print(d)
{'jerry': 6, 'panda': 10, 'seiya': 25, 'tom': 4}
(3) 刪除鍵/值對
用pop(key)的方法刪除一個鍵值對,對應的value也會從dict中刪除。
>>> d = {'tom':4, 'jerry':6, 'seiya':25}
>>> d.pop('seiya')
25
>>> print(d)
{'tom': 4, 'jerry': 6}