查看: 4712|回复: 0

[入门教程] 【chocho教程】micropython入门教程二

[复制链接]
本帖最后由 Chocho2017 于 2018-5-10 14:59 编辑

第二章 microPython基础
在进行项目学习之前,我们先学习下microPython基础,以便对后面章节的学习。
关键字
我们知道在使用microPython时,实际上是调用相关的函数(方法),告诉主板怎么控制其外设,如GPIO引脚置高、置低,从而引发LED灯的亮灭变化,如控制AD输入,从而获取控制引脚的电压变化值等等。而在使用这些外设时候,外设本身是怎么配置的,我们并不关心,而是调用或导入相关的驱动模块进行使用,这和Python语法一样,需要用到import关键字。本章节将讲解一些常用关键字的使用。

import
import关键字是导入模块,后面紧跟要导入的模块名称,如time,math等等。在microPython模块库中有大量的模块可以使用,要想使用这些文件需要用import语句把指定模块导入到当前程序中。

语法如下:
2_1.png
使用方法:
2_2.png
如果要导入多个模块,只需要在模块名之前用逗号进行分割:
2_3.png
注意:microPython语法中,注释是#符号,这点和C语言有区别。


microPython模块主要有三种,标准库模块(如time,math),第三方模块(如传感器模块HT1632),自定义模块(自己写的模块)。



from import
microPython语句中还有另外一种导入模块的方法,确切的说是导入指定模块中的指定函数方法:from import。如from machine import Pin,从machine模块中导入Pin函数方法。

语法如下:
2_4.png
使用方法:
2_5.png




if
if语法和C语言、C++等非常类似,最大的区别就是冒号以及严格的缩进,这也是microPython语言区别其他编程语言的地方。

语法如下:
2_6.png
使用方法:
2_7.png
可以看到microPython语法中if是不需要用括号括起来的,取而代之的是:号。而如果出现多个语句判断时,elseif也与C语言有区别,是elif。
注意:这里需要注意一下,在python2中print函数使用时不用括号,而在python3中需要使用括号。uPyCraft IDE使用的microPython是基于python3的编程方式,因此这里需要加括号。




for
for语句是microPython中的一个循环控制语句,任何有序的序列对象内的元素都可以遍历,比如字符串、列表list、元组等等。

语法如下:
2_8.png
使用方法:
2_9.png
代码中,i相当于目标,字符串变量s是遍历对象。当运行for语句时,每一次迭代,i都会从遍历对象s中取出一个新值。
for语句操作列表示例如下:
2_10.png
for循环操作元组示例如下:
2_11.png
实验效果如下:
2_12.png




while
while语句和前面的for语句都是循环语句,所不同的是,while循环中的执行代码块会一直循环执行,直到当条件不满足时。microPython中的while循环语句通常被用在计数循环中。

语法如下:
2_13.png
使用方法:
2_14.png
实验效果如下:
2_15.png



break
在前面的学习中,我们知道,for和while都是循环语句,但是,如果我们想在没有满足条件的情况下就跳出循环体,该怎么办了?这个时候我们就需要用到break语句来结束循环体,这和C语言中一样。

使用方法:
2_16.png
实现效果如下:
2_17.png
我们可以看到,x只打印出0、1、2并没有一直打印(True代表一直为真),因为我们设定了当x等于3时,执行break语句,这样,程序将跳出while循环体。




数据类型
microPython中的变量声明和C语言不同,在C语言中,定义一个变量必须定义出它的类型,如整型(int)、浮点型(float)、字符串类型(string)等等,而在microPython中就简单了,变量在定义的时候不用声明类型,但每个变量在使用前都必须赋值(初始值),变量赋值以后才能被创建。在microPython中,变量就是变量,它没有类型,我们所说的“类型”是变量所在内存中的对象类型。

microPython中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。

Number
数字类型主要是指int、float、bool、complex(复数)。可以通过type()函数来查询变量所指的对象类型。

使用方法:
2_18.png
这样的程序在前面的教程中也学习过,定义一个数字变量a,并赋值1,然后打印出来。我们可以用type()函数来查询变量a的类型,代码如下:
2_19.png
输出结果如下:
2_20.png
可以看到,控制器告诉我们a是一个int型。除此之外,我们也可以用isinstance来判断:
2_21.png
输出结果如下:
2_22.png       
返回True,说明通过isinstance()函数来判断a是否是int型,答案是肯定的。




String
microPython中的字符串,需要用单引号或者双引号括起来。这两种表示方法在程序中完全一样,而且都允许在字符串内部把另外一种表示方法的符号包括进来,无须用反斜杠符号进行转义。

例如,我们可以这样使用:
2_23.png
也可以这样使用:
2_24.png
当然,也可以采用反斜杠'\'转义特殊字符。而在有些时候,程序里面的字符串很长,导致一个字符串需要扩展到多行显示,也可以在一行的末尾使用反斜杠'\',进行换行延续:
2_25.png
加上print(s)语句,通过uPyCraft IDE下载到主控板后,可以看到打印效果如下:
2_26.png
对于多行字符串延续,还有另外一种方式,使用三个连续的"符号将字符串括起来:
2_27.png
输出结果和之前两种有点差别,程序会在第一行和第二行之间自动加一个换行,于是您会看到,打印出来的s字符串会显示两行:
2_28.png
microPython中的字符串和C语言中不同的是,microPython字符串不能被改变,例如向一个索引位置赋值语句,s[0]= 'c'会导致错误。
在做字符串连接的时候,可以使用"+"号,例如:
2_29.png
实验结果如下:
2_30.png

在使用字符串类型时,我们应当注意一下几点:
  • 反斜杠可以用来转义,使用r可以让反斜杠不发生转义,如print(r'abc\r')
  • 字符串可以用+运算符进行连接
  • 索引字符串时,从左往右以0开始,如s[0],从右往左以-1开始,如s[-1]
  • 字符串不能改变




List
List类型可以完成大多数集合类的数据结构,是microPython中使用最频繁的数据类型。List中元素的类型可以不同,它支持数字、字符串、列表(嵌套)。列表,需要用[]方括号括起来,并用逗号分隔开元素列表。列表可以被索引和截取,被截取后返回一个包含所需元素的新列表。

语法如下:
2_31.png
实验结果如下:
2_32.png
列表和microPython字符串的区别在于,列表中的元素是可以改变的,例如:
2_33.png
输出结果如下:
2_34.png
我们可以看到,列表a中的第一个元素改变了。




Tuple
microPython中的Tuple(元组)和列表类似,区别在于元组中的元素不能修改,并且元组写在小括号里面,元素之间用逗号隔开,元素类型可以不同。

使用方法如下:
2_35.png
实验结果如下:
2_36.png
在使用元组时,我们需要注意一下几点:
  • 与字符串一样,元组中的元素不能修改
  • 元组可以被索引和截取
  • 构造包含0或者1个元素的元组的语法规则,如t=(),t=(20,)
  • 元组也可以使用+连接




Set
在microPython中,set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种。集合set可以被创建、添加、删除、交集、并集、差集。

使用方法如下:
2_37.png
s是集合变量,并赋值一个boy成员。可以用print函数来打印:
2_38.png
显示结果如下:
2_39.png

集合的添加有两种方法,分别是add和update,但这两种方法有区别。add方法是把元素作为一个整体添加到集合中,而update是把元素拆分,作为单个元素传到集合,例如:
2_42.png 2_41.png
2_40.png 2_43.png
而在删除集合中的元素时,使用remove方法,具体操作如下:
2_44.png
输出结果如下:
2_45.png




字典
在microPython中,字典是另一种可变容器模型,可以存储任意类型对象。它是一个无序的集合,通过键来存取值,而不能采用索引。字典由键和键对应的值组成,且键和值一一对应。

字典的创建方法,示例如下:
2_46.png
字典是无序的,所以不能用索引来查找字典中的数据,需要通过键来查找,示例如下:
2_47.png
输出实验结果如下:
2_48.png
可以看到,当我们想访问字典中名称是什么的时候,只需要传递键‘name’就可以了。字典中,数据的修改也一样,需要传递键,例如:
2_49.png
实验输出结果如下:
2_50.png

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail