第3章
编程基础
本章重点学习控制程序流程,以及循环和分支结构的编程方法。
(1)了解变量、值、类型、结构体、随机函数的基本概念。
(2)掌握while和for循环、if语句的程序编写。
在编写复杂程序时,需要用到变量并进行程序流程控制,控制程序流程包括循环和
分支。
3.1 变 量
常量是在某一变化过程中,始终保持不变的量,例如一天有24小时、圆周率约为3.14 
等。变量是在某一变化过程中,可以取不同数值的量。例如,用公式S=πr2 求各种半径的
圆面积,这里π是常量,S 和r 是变量。
在Mu编辑器中输入 
from microbit import * 
单击REPL按钮,在REPL窗口中输入语句 
score=0 
图3.1 变量score 
表示这是一个名字为score,值为0的变量。在此之后, 
Python只要看到score,就会用值0来替换score。
继续输入 
print (score) 
结果如图3.1所示。
Python是顺序执行命令的,在使用变量score之前
必须先给它赋值,否则会报错。

开源智能硬件开发案例教程

26

...................... 

.............. 

如果想改变变量score的值,只需要给它赋一个新值,如score=1,当再次执行print 
(score)后,2所示。

结果如图3.


图3.赋新值

2 

.................. 

..........

....

..................

小贴士.................................................................................... 

变量的概念基本上与初中代数的方程变量是一致的,只是在计算机程序中,变量不
仅可以是数字,还可以是任意数据类型。
变量名必须是大小写英文、数字和下画线的组合,但不能用数字开头,不能使用

....

....................................................................................

Python关键字(

如if、for等)。

Python的命名习惯是使用小写字母,用下画线将单词分开,如high_score=100 。变量
的值可以是数字,也可以文字。甚至可以把同一个变量轮换赋值成数字和文字,如图3.
所示。当然,变量的当前值只能是一种类型。
3 


图3.变量的值为数字或文字

3 

3.值和类型
2 

当人们看到数字8时,不会关心它究竟是文字,还是数字。在Python中,每个数据都
有特定的类型,这样Python才知道该如何处理。通过type() 函数就可
以看到Python数据的类型,4所示。

如图3.
图3.4中,第1行的8是int(整数integer的简写)数据类型,第3 
行中的8是str(字符string的简写)数据类型,Python认为整数8和字图3.数据类型


4 

符8是不同的,它们的运算结果如图3.

5所示。


27

第3章 编程基础........ 

.............. 

图3.第1行将两个数字8加在一起, 8"合并在一起。

5中, 而第3行却是将两个字符"
由此可见,区分值的类型非常重要, 将会得到非常有意思的结果。图3.

如果出错,6显示更
多的类型。


图3.不同数据类型的运算图3.浮点数和布尔类型

56 

图3.第1行输出的是floa一个浮点数表示一个实数,小数点位置不固定), 第36中, t( 
e)。

行输出的是bool(布尔类型,只有两个值:True和Fals

1. 
数值
数据的具体类型决定了Python可以执行哪些操作,数值(包括int和float类型)可以
有两种操作类型:比较和数值操作。

(1)比较。比较需要两个操作数, ool型,1所示。
返回值为b如表3.

表3.数值类型的比较操作

1 

操作含义示例
< 小于9<8(False) 
> 大于9>8(True) 
== 等于9==9(True) 
<= 小于或等于9<=9(True) 
>= 大于或等于9>=10(False) 
!= 不等于9!=10(True) 

可以在Python解释器中输入任何操作符进行验证,2所示
7
。
所示。

如图3.

(2)数值操作。数值操作返回一个数值类型,如表3.
表3.数值操作

2 

操作含义示例
+ 加2+2==>4 
-减3-2==>1 
* 乘2*3==>6 
/ 除10/5==>2 
% 求余5%2==>1 
** 乘方4**2==>16 
int() 转换为int型int(3.2)==>3 
float() 转换为float型float(3)==>3.0 


.......... ..28.. 开..源..智..能..硬..件..开..发..案..例教..程.. 
在程序中使用数值运算,通常都将其返回值赋值给某个变量,如图3.7所示。
图3.7 操作符验证与数值操作
2.字符串
字符串类型可以保存任何文字,包括单个数据和一组字母。创建字符串只需要将数据
用“'”或者“""”括起来即可。在Python中,两者都可以。首选后者,因为它可以处理含有
“'”的字符串。
.................................................................................... 
.................................. 
.................................................................................... 
.................................. 
在Python3中,字符串的编码格式为Unicode,因此Python的字符串支持多种语言。
当源代码中包含中文时,就必须指定保存为UTF-8编码,通常在文件开头写上以
下两行: 
#!/usr/bin/env python3 
#-*-coding: utf-8-*- 
其中,第一行注释是为了告诉Linux或MacOSX系统,这是一个Python可执行程序。
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则在源代码中
写的中文输出可能会有乱码。
此外,还要确保文本编辑器正在使用UTF-8编码。
小贴士.......... 
.... 
.... 
.......... 
与数值类型相似,Python提供了一些字符串操作方法,如表3.3所示。图3.8是在
Python解释器中的部分结果。
表3.3 字符串操作
操 作含 义示例
string[x] 获取第x+1个字符"abcde"[1]==>"b" 
string[x:y] 获取所有从x+1到y 的字符"abcde"[1:3]==>"bc" 
string[:y] 获取从字符串开始到第y个的字符"abcde"[:3]==>"abc" 
string[x:] 获取从第x+1个开始到字符串结束的字符"abcde"[3:]==>"de" 
len(string) 返回字符串长度len("abcde")==>5 
string+string 合并两个字符串"abc"+"def"==>"abcdef" 
注:在Python中,计数从0开始,所以对应人类语言变为x+1。

第 3章 编程基础


29

........ 

.............. 


图3.字符串操作验证

8 

3. 
布尔值
布尔类型非常简单,只有True和False两种取值。

............................ 

..........

....

............................

小贴士.................................................................................... 

在Python中,这两个值的首字母要大写,并且不需要任何引号。
这两个值通常不存在变量中。
它们通常用于条件语句(如if)的判断条件中,其主要操作符是与(and)、或(or)和

非(not)。

● 非:简单地取值转换。
● 与:需要两个操作数,如果两个数都为真,则返回真,否则,返回假。
● 或:也需要两个操作数,如果两个数中任何一个为真,则返回真。
....

....................................................................................

True和False的操作结果如图3.

9所示。


图3.非与或操作验证

9 

4. 
数据类型转换
使用函数int()、float() 和str() 可以转换数据类型。它们分别将其他数据类型转换为
整数、浮点数和字符串。但是它们相互之间不能随意转换,如果将浮点数转为整数,Python 
将舍去所有小数部分。

当字符串中只有一个字符时,才能转换成数字,而其他类型几乎都可以转换成字符串。


开源智能硬件开发案例教程

30

...................... 

.............. 

3.结构体
3 

除了简单数据类型,Python还允许将数据用不同方式组合起来创建结构体。

1. 
列表和元组
最简单的结构体是sequences(线性结构), 它将信息一个接一个地存储起来,sequences 
分为两类:list(列表)和tuple(元组)。

list(列表)是一种有序的集合,可以随时添加和删除其中的元素。tuple(元组)与list 
非常类似,但是tuple一旦初始化就不能修改。

用“[]”将数字括起来可构成列表,用“()”将数字括起来可构成元组。在结构体名后面
跟“[]”,并在其中填入下标就可以访问单个元素。

注意:下标从0开始,因此list_1[0]和tuple_1[0]可以访问线性结构中的第一个元素。

大多数情况下,列表和元组是相似的, 10 所示。

如图3.


图3.t与te相似处

10 
lisupl

但是,在更新元素时就会发现列表和元组之间的差别:可以更新列表中的单个元素, 
但不能更新元组中的单个元素,如图3.

11 所示。


图3.t与te更新单个元素时的差别

11 
lisupl

如果想更新元组中的单个元素,可以在一次性覆盖元组中的所有元素时,告诉Python 
将变量tuple_1赋一个新值以取代旧值, 12 所示。
3,部分操作如图3.

如图3.
字符串的操作符可以用于列表和元组,具体方法参考表3.13 所示。


图3.pe更新元素图3.t与tpe的字符串操作

12 
tul13 
lisul

2. 
列表操作方法
列表的操作方法如表3.

4所示。


第3章 编程基础


31

........ 

.............. 

表3.列表操作方法

4 

操作含义示例
list.append(item) 添加元素到列表尾部list_1.append(0) 
list.extend(list_2) 合并list_2到列表尾部list_1.extend([0,-1]) 
list.insert(x,item) 插入元素到第x+1 个位置list_1.insert(1,88) 
list.sort() 排序列表list_1.sort() 
list.index(item) 返回列表中第一次出现该元素的位置list_1.index(0) 
list.count(item) 计算列表中该元素出现的次数list_1.count(0) 
list.remove(item) 删除列表中第一次出现的该元素list_1.remove(0) 
list.pop(x) 返回并删除第x+1 个元素list_1.pop(1) 

注:在Python中,计数从0开始,所以对应人类语言多为x+1 。

前7个操作的结果如图3.14 所示,它们中有些返回一个值,有些改变了list_1的值,有
些改变了元素的顺序。


图3.列表操作结果

14 

pop(x)比较特殊,首先,它返回列表中第x+1 个位置的元
素值,随后从列表中删除该元素, 15 所示。

如图3.

3. 
元组操作方法
元组除了不能被修改外,其他与列表非常类似。所有对列


表的操作方法,只要不改变元素的值,都可以用于元组;如果改
图3.p(的操作结果
变了元素的值,则出现错误信息, 16 所示。
15 
pox)

如图3.


图3.对元组的操作

16 

4. 
字典
列表和元组是元素的集合,每个元素都对应了其中的一个下标。在列表["a","b", 


.......... ..32.. 开..源..智..能..硬..件..开..发..案..例教..程.. 
"c","d"]中,a的下标是0,b的下标是1,以此类推。
如果要创建一个数据结构,把学号与名字关联起来,就要用到字典(dictionary,简称
dict)。Python内置的字典使用键-值(key-value)存储,具有极快的查找速度。
.................................................................................... 
........................ .................................................................................... 
........................ 
dict的实现原理和查字典是一样的。
假设字典包含了1万个汉字,要查某个字时,一种办法是把字典从第一页往后翻, 
直到找到想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。
第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到
该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加
而变慢。dict就是用第二种实现方式。
小贴士.......... 
.... 
.... 
.......... 
在Python中,可以使用通过“{}”来定义的字典,如图3.17所示。
图3.17 定义字典
字典中的元素称为键值对,其中第一部分是键(key),第二部分是值(value)。只需要
给定一个新键及其对应的值,就可以在字典中添加新元素,如图3.18所示。
图3.18 添加新元素
.................................................................................... 
........................ 
.................................................................................... 
........................ 
dict的特点如下: 
● 查找和插入的速度极快,不会随着key的增加而变慢。
● 需要占用大量的内存,内存浪费多。
list的特点如下: 
● 查找和插入的时间随着元素的增加而增加。
● 占用空间小,浪费内存很少,所以dict是用空间来换取时间的一种方法。
小贴士.......... 
.... 
.... 
.......... 
5.集合
与列表和元组使用下标、字典使用键不同,Python的集合(set)允许将一堆数据放在一
起而不用指定下标或序号。
集合set和字典dict的唯一区别仅在于没有存储对应的value,Python用于集合的操
作方法如表3.5所示。

第3 章 编程基础........ ..3 3............ 
表3.5 集合操作方法
操 作含 义
iteminset_1 测试给定的值是否在集合中
set_1&set_2 返回两个集合共有的元素
set_1|set_2 合并两个集合中的元素
set_1-set_2 set_1中存在set_2中不存在的元素
set_1^set_2 set_1或set_2中存在的元素,不包括两个集合共有的元素 
对两个集合herbs和spices的上述操作结果如图3.19所示。
图3.19 集合操作结果
3.4 控制程序流程
控制程序流程包括循环和分支。
如果需要让程序等待某事件发生,就需要围绕一段代码定义循环,这段代码定义了如
何对某些预期事件(例如按下按钮)作出反应。
3.4.1 while 循环
while循环是一种最简单的循环,关键字while用来判断条件是否为真。如果是,它会
运行一个代码块,这个代码块称为循环体;如果不是,则中断循环(忽略这个循环体),程序
的其余部分继续执行。
如果条件始终为真,它将一直循环下去,直到条件为假,如图3.20所示是一个简单的
例子。
图3.20 while循环

.......... ..34.. 开..源..智..能..硬..件..开..发..案..例教..程.. 
.................................................................................... 
................................ 
.................................................................................... 
................................ 
条件后面要加上“:”,接下来的一行要缩进,所有缩进部分都属于循环体。
要在REPL中运行这段代码,必须在输入print语句之后按回车(Enter)键,然后按
退格(Backspace)键删掉自动产生的tab(缩进),最后再按回车键。
图3.20中的矩形框部分就是用退格键删掉缩进的部分。
最后按回车键是告诉Python循环体结束并执行这段代码。
这段代码会陷入死循环,不断地执行print()语句。按Ctrl+C键可以将其终止。
为了不陷入死循环,通常需要一个或多个变量在循环内部改变判断条件,使程序最
终能够跳出循环。
小贴士.......... 
.... 
.... 
.......... 
【例3.1】 while循环。
编写程序,代码如下: 
from microbit import * 
while running_time()<10000: 
display.show(Image.ASLEEP) 
display.show(Image.SURPRISED) 
.................................................................................... 
................................ 
.................................................................................... 
................................ 
函数running_time()的作用是在设备启动后返回时间(单位:毫秒)。
语句whilerunning_time()<10000检查运行时间是否小于1×104ms(10s)。
如果是,则属于事件执行范围,设备将会显示Image.ASLEEP(睡眠)。
若运行时间大于或等于1×104ms,即running_time()小于1×104ms,while条件
不成立。
在这种情况下,循环终止,程序将会继续执行while 循环之后的代码块,显示
Image.SURPRISED。
看起来像是设备休眠10s后,露出“惊喜”的表情。
小贴士.......... 
.... 
.... 
.......... 
单击“刷入”按钮,10s前与10s后在micro:bit上显示结果如图3.21所示。
【例3.2】 动画-闪烁的星星。
夏天的晚上,人们经常看到天上的星星闪闪发光,非常好看。联欢晚会的舞台上,灯光
配合舞者的动作闪烁的效果赏心悦目。如何通过micro:bit实现闪烁的效果呢? 
由于在图案库里面没有星星的图案,所以必须自己绘制,星星的图像绘制出来后,如何
实现闪烁呢?

第3 章 编程基础........ ..3 5............ 
图3.21 while循环中的条件判断 
把闪烁的现象通过慢动作来分析后会发现,星星闪烁实际上就是星星亮一段时间灭一
段时间;同时,它不是闪烁一次就结束了,所以就需要使用循环让它一直执行下去。
编写程序,代码如下: 
from microbit import * 
while True: 
star=Image("00900:" 
"09990:" 
"99999:" 
"09990:" 
"00900") 
display.show(star) 
sleep(2000) 
display.clear() 
sleep(2000) 
.................................................................................... 
.................. 
.................................................................................... 
.................. 
永久循环语句whileTrue的使用: 
如果要运行某代码块,while会检查该事件是否为True,由于True事件永久为
True,这样,一个永久循环就实现了。
display的clear方法将LED显示屏中每个像素的亮度置0(将灯熄灭)。
小贴士.......... 
.... 
.... 
.......... 
单击“刷入”按钮,“闪烁的星星”效果如图3.22所示。 
(1)如果不用clear方法,该如何实现相应的功能呢? 
(2)如果不把灯熄灭,而是显示相似的图案,效果又怎么样呢? 
复习思考题 

开源智能硬件开发案例教程

36

...................... 

.............. 


图3.永久循环

22 

3.4.2 for 
循环
for循环可以用来遍历数据,它在每次循环中实现对每个数据的处理, 23 所示。

如图3.


图3.r循环代码与执行结果

23 
fo

循环中,g(x,遍历x~y-1的每个数据。

rany) 
rang(y,ang

x,z)的第三个参数z,可以设定两个连续数字之间的间隔。例如把re(1,6) 
改成range(1,6,2), 它将只计算1~5的所有奇数;把range(1,6)改成range(2,6,2), 它将
只计算1~5的所有偶数, 24 所示。

如图3.


图3.e第三个参数的作用

24 
rang

3.4.3 分支语句
Python使用分支来控制程序流,使其根据不同条件,分别执行不同的代码。分支由if 
语句实现。


第3 章 编程基础........ ..3 7............ 
.................................................................................... 
................................ 
.................................................................................... 
................................ 
类似while循环,if语句的执行只需要一个布尔类型的条件,它后面还可以有附加
语句,如elif(elseif的缩写)和else语句。
if语句可以不带elif或else。
如果没有else语句,同时判断条件也不成立,Python就会跳过if语句,不执行其中
的任何代码。
一个if语句最多只执行一段代码,只要Python发现条件为真,就执行该段代码并
结束整个if语句。
如果没有一个条件为真,则执行else后面的代码段。
小贴士.......... 
.... 
.... 
.......... 
如果希望MicroPython对按下按钮事件做出反应,应该把它放入一个永久循环并检查
按钮是否is_pressed(被按下)。
【例3.3】 指示按钮。
做一个方向指示按钮,实现按下左边的按钮(按钮A)指向左边,按下右边的按钮(按钮
B)指向右边,不按的时候,没有指示。
编写程序,代码如下: 
from microbit import * 
while True: 
if button_a.is_pressed(): 
display.show(Image.ARROW_W) 
elif button_b.is_pressed(): 
display.show(Image.ARROW_E) 
单击“刷入”按钮,效果如图3.25所示。
图3.25 指示按钮
【例3.4】 按钮检测。
编写程序,显示按下了哪个按钮。

.......... ..38.. 开..源..智..能..硬..件..开..发..案..例教..程.. 
from microbit import * 
while True: 
if button_a.is_pressed() and button_b.is_pressed(): 
display.scroll("AB") 
break 
elif button_a.is_pressed(): 
display.scroll("A") 
elif button_b.is_pressed(): 
display.scroll("B") 
sleep(100) 
.................................................................................... 
............................ 
.................................................................................... 
............................ 
Python中可以使用逻辑运算符与(and)、或(or)、非(not)来检查多重判断语句。
非运算就是简单地转换取值;与运算需要两个操作数,如果两个操作数都为真,则
返回真,否则,返回假;或运算也需要两个操作数,如果两个操作数中任何一个为真,则
返回真。
程序代码中的and表示与运算,即按钮A 与按钮B同时按下。
break的作用是跳出上一层的循环而执行该循环后面的语句。
通常break语句总是与if语句连在一起,即满足条件时便跳出循环。
小贴士.......... 
.... 
.... 
.......... 
单击“刷入”按钮,分别按下按钮A 和按钮B的效果如图3.26所示,当同时按下按钮A 
和B时,滚动显示AB。
图3.26 按钮检测 
代码中,将break放置在“A”或“B”语句的下面会发生什么情况? 
复习思考题 
【例3.5】 忧伤的宠物。
编写程序,代码如下:

第3 章 编程基础........ ..3 9............ 
from microbit import * 
while True: 
if button_a.is_pressed(): 
display.show(Image.HAPPY) 
elif button_b.is_pressed(): 
break 
else: 
display.show(Image.SAD) 
display.clear() 
.................................................................................... 
........................ 
.................................................................................... 
........................ 
is_pressed方法仅产生两个结果:True或False,按下按钮后,系统要么返回True, 
要么返回False。
这只宠物总是很悲伤,显示“悲伤”的表情,除非按下按钮A,当按钮A 被按下时, 
永久循环显示“高兴”的表情。
当按钮B被按下时,通过break语句终止该循环。
循环终止后,执行循环外的display.clear()语句,对显示屏做clear(清除)。
小贴士.......... 
.... 
.... 
.......... 
单击“刷入”按钮,效果如图3.27所示。
图3.27 按钮检测 
玩过这个游戏后,有什么办法改善这个游戏? 
复习思考题 
【例3.6】 倒计时器。
在每年除夕的夜晚,都会有很多地方举行春节倒计时活动;又如,商家经常举办促销活
动倒计时以及红绿灯倒计时等。虽然它们表现的方式不太一样,但都属于倒计时器。
想要实现倒计时,就需要一个变量,通过它不断改变数值并显示出来,实现倒计时数的
改变。如果倒计时的数超过1位数的话,就需要移动显示,不利于观察。下面制作一个简

.......... ..40.. 开..源..智..能..硬..件..开..发..案..例教..程.. 
单的9~0的倒计时器。
编写程序,代码如下: 
from microbit import * 
shijian=9 
while True: 
display.show(shijian) 
sleep(2000) 
shijian=shijian-1 
if shijian==0: 
display.show(Image.HAPPY) 
sleep(5000) 
shijian=9 
.................................................................................... 
.................. 
.................................................................................... 
.................. 
程序开始时设置变量shijian,并给它赋初始值9(倒计时从9开始)。
在循环中,每隔2s,变量shijian的值减少1(实现倒计时)。
通过if语句判断变量shijian的值是否为0,如果为0则显示“笑脸”。
等待5s之后,把变量shijian重新设置为9,重新开始倒计时,一直这样循环进行。
小贴士.......... 
.... 
.... 
.......... 
单击“刷入”按钮,倒计时从9开始,到0显示“笑脸”图案,不断循环显示,部分效果图
如图3.28所示。
图3.28 倒计时器的部分状态 
(1)如何实现0~9的正计时? 
(2)如何实现不是开机就从数字9开始,而是按下按键A 之后才会从9开始, 
之后一直重复执行? 
复习思考题 

第 3章 编程基础


41

........ 

.............. 

3.4.4 循环嵌套
在进行程序编写时,经常会遇到需要同时遍历多种数据的情况,这时就要用到循环
嵌套。

..........
.............. 

..............

小贴士.................................................................................... 

编写循环嵌套时要注意缩进级别: 
第一个循环体的缩进为1,第二个循环体的缩进为2。只有这样,Python才能理解
哪些代码属于第几个循环体以及每个循环体在何处结束。

....

....

....................................................................................

在REPL 窗口中输入如图3.29 所示的程序,用来找出1~10 中的所有素数。
按退格键后再按回车键,结果如图3.

30 所示。


图3.29 
找出110 
的所有素数的程序30 
找出1~

~图3.10 
的所有素数

..........
...................... 

......................

....................................................................................

小贴士.................................................................................... 

....

....

运行嵌套循环时可能会使程序变慢: 

例如计算3000 以内的素数(只需要将上述程序第一行中的10 改成3000 即可), 程
序运行就会用非常长的时间。

这是因为外层循环要循环上千次,每次进入内层循环也需要执行很多次。

如果正在做这个实验,会发现整个程序运行起来很慢。

如果不想等待,可以按Ctrl+C 键停止运行。通过下面的方法可以改进该程序:首先
使用range(1,3000,2)跳过所有的偶数,这样就直接省去一半时间;其次,在if里面增加语
句bk,一旦发现某个数字是非素数,就使用bk跳出循环,继续执行下面一行(_

reareaifisprime:)。程序如图3.

31 所示。


.......... ..42.. 开..源..智..能..硬..件..开..发..案..例教..程.. 
图3.31 程序优化
3.5 随机函数
随机性意味着无法准确预测。比如,在玩骰子的时候,人们不知道会看到6个面上的
哪个点数;再如,在抽奖的时候,主持人从抽奖箱里随便抽取一个数字,拿到同样数字的观
众就中奖了。这样的数字就是随机数。
如果想让事情偶然发生或者稍微打乱顺序,就需要使用随机函数产生随机行为。
MicroPython的random 库(模块)可以引入随机性,只要使用代码importrandom 即可。
下面通过一个简单的例子进行说明。
【例3.7】 随机数字。
编写程序,代码如下: 
from microbit import * 
import random 
display.show(str(random.randint(1, 6))) 
.................................................................................... 
........................ 
.................................................................................... 
........................ 
MicroPython 有几个很有用的生成随机数字的方法,包括random.randint、
random.randrange、random.random 等: 
random.randint(a,b):返回两个参数a、b 之间的自然数N (a≤N ≤b)。
random.randrange(N ):返回0~N 的自然数(不包含N )。
random.random 生成一个带小数点的数字,返回0.0~1.0的浮点数。
随机数种子用于生成伪随机数的初始数值,通过random.seed实现。
小贴士.......... 
.... 
.... 
.......... 
如何产生大于1的随机浮点数? 
复习思考题 
【例3.8】 随机骰子。
骰子是中国古代民间娱乐用来投掷的博具,早在战国时期就有。在游戏时经常会用到

第3 章 编程基础........ ..4 3............ 
骰子,如麻将、牌九。另外,有很多桌游都以骰子的点数来决定任务角色行走的步数。最常
见的骰子有6个面,它是一个正立方体,每面分别有1~6个点(或数字),其相对两面的数
字之和为7。
想要实现随机骰子,首先需要一个能够产生1~6的随机数,然后每一个数对应骰子的
一面,把对应的图案通过LED点阵显示出来;同时,每次产生随机数之前,需要通过按钮被
按下来触发实现。
编写程序,代码如下: 
from microbit import * 
import random 
number1=Image("00000:" 
"00000:" 
"00900:" 
"00000:" 
"00000") 
number2=Image("00000:" 
"00900:" 
"00000:" 
"00900:" 
"00000") 
number3=Image("00000:" 
"09000:" 
"00900:" 
"00090:" 
"00000") 
number4=Image("00000:" 
"09090:" 
"00000:" 
"09090:" 
"00000") 
number5=Image("00000:" 
"09090:" 
"00900:" 
"09090:" 
"00000") 
number6=Image("09090:" 
"00000:" 
"09090:" 
"00000:" 
"09090")

.......... ..44.. 开..源..智..能..硬..件..开..发..案..例教..程.. 
while True: 
if button_a.was_pressed(): 
temp=random.randint(1, 6) 
if temp==1: 
display.show(number1) 
elif temp==2: 
display.show(number2) 
elif temp==3: 
display.show(number3) 
elif temp==4: 
display.show(number4) 
elif temp==5: 
display.show(number5) 
elif temp==6: 
display.show(number6) 
.................................................................................... 
.............. 
.................................................................................... 
.............. 
通过Image自定义1~6点的骰子。
设置变量temp,用于放置产生的随机数。
根据变量temp的值,显示对应的骰子。
小贴士.......... 
.... 
.... 
.......... 
单击“刷入”按钮,按下按钮A 产生随机骰子,部分效果图如图3.32所示。
图3.32 随机掷骰子 
(1)如何实现随机显示√和×? 
(2)用点阵显示石头剪刀布,然后两位同学进行游戏,看谁获胜的次数多? 
复习思考题 
【例3.9】 燃烧的火焰。
编写程序,代码如下: 
from microbit import * 
import random 
i=Image("00000:"*5)