【雕爷学编程】MicroPython手册之控制流语句 continue - 跳进下次循环

在这里插入图片描述

MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

总体来说,MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。

在这里插入图片描述

二、MicroPython 控制流语句之continue - 跳进下次循环

MicroPython的控制流语句是指可以根据条件或循环来控制程序执行顺序的语句,如if、for、while、break、continue、pass等。控制流语句的主要特点有以下几点:
1、MicroPython的控制流语句与Python的控制流语句基本相同,只是在一些细节上有所区别,如MicroPython不支持match语句,而Python 3.10及以上版本支持。
2、MicroPython的控制流语句使用缩进来表示代码块,而不是使用花括号或其他符号,这使得代码更加简洁和清晰。
3、MicroPython的控制流语句可以嵌套使用,即在一个控制流语句中可以包含另一个控制流语句,以实现更复杂的逻辑。

控制流语句的应用场景有很多,例如:
1、用if语句可以根据条件来执行不同的代码块,如判断用户输入的密码是否正确,或者判断温度是否超过阈值等。
2、用for语句可以遍历一个序列或迭代器中的每个元素,并对每个元素进行相应的操作,如打印列表中的每个元素,或者计算字符串中的每个字符出现的次数等。
3、用while语句可以在条件为真时重复执行一个代码块,直到条件为假时停止,如实现一个猜数字游戏,或者计算一个数的阶乘等。
4、用break语句可以提前终止一个循环,如在查找一个元素时找到后就退出循环,或者在满足某个条件时就退出循环等。
5、用continue语句可以跳过当前循环的剩余部分,直接进入下一次循环,如在遍历一个列表时跳过某些不符合要求的元素,或者在计算一个数的因数时跳过偶数等。
6、用pass语句可以表示一个空的代码块,什么也不做,如在定义一个函数或类时暂时不写具体的实现,或者在一个分支中不需要执行任何操作等。

MicroPython的continue - 跳进下次循环是一种控制流语句,用于跳过当前循环的剩余部分,而是直接进入下一次循环的开始。continue - 跳进下次循环的主要特点有以下几点:

1、MicroPython的continue - 跳进下次循环与Python的continue - 跳进下次循环基本相同,只是在一些细节上有所区别,如MicroPython不支持在finally子句中使用continue语句,而Python支持。
2、MicroPython的continue - 跳进下次循环通常与if条件语句配合使用,当满足某个条件时,执行continue语句,跳过当前循环的剩余部分。
3、MicroPython的continue - 跳进下次循环可以用在for循环或while循环中,但不能用在try-except语句中。

continue - 跳进下次循环的应用场景有很多,例如:

1、用于实现一些需要忽略某些特殊情况或无效数据的功能,如在遍历一个列表时跳过空值或负值,或者在计算一个数列的和时跳过非数字值等。
2、用于实现一些需要优化性能或节省时间的功能,如在查找一个元素时遇到不匹配的元素就跳过,或者在验证一个表单时遇到错误就跳过等。
3、用于实现一些需要根据用户输入或选择来控制循环的功能,如在实现一个猜数字游戏时让用户选择继续就继续循环,或者在实现一个菜单系统时让用户选择返回就返回上一级等。

continue - 跳进下次循环的注意事项有以下几点:

1、MicroPython的continue - 跳进下次循环需要注意放置在合适的位置,否则会导致逻辑错误或意外结果。
2、MicroPython的continue - 跳进下次循环需要注意与break语句和else语句的区别和配合使用,否则会导致逻辑错误或意外结果。
3、MicroPython的continue - 跳进下次循环需要注意避免出现无限循环,即条件永远为真且没有break语句的情况。

以下是几个MicroPython的continue - 跳进下次循环实际运用程序案例:

案例一:实现一个简单的过滤列表函数,可以去除一个列表中的空值和负值,并返回一个新的列表。

# 定义一个过滤列表函数,接受一个参数:列表lst
def filter_list(lst):
    # 定义一个空列表,用于存储过滤后的元素
    filtered = []
    # 用for循环遍历列表lst中的每个元素,并赋值给e
    for e in lst:
        # 如果e为空值或负值,执行continue语句,跳过当前循环
        if not e or e < 0:
            continue
        # 如果e不为空值且不为负值,将e添加到filtered列表中
        filtered.append(e)
    # 返回过滤后的列表
    return filtered

# 定义一个列表(一维列表)
lst = [3, None, 5, -2, 0, 7]
# 调用过滤列表函数,传入列表lst,并赋值给result
result = filter_list(lst)
# 打印结果
print("过滤后的列表为:")
print(result)

案例二:实现一个简单的查找最大值函数,可以在一个数列中查找最大的数,并返回其值。

# 定义一个查找最大值函数,接受一个参数:数列seq
def find_max(seq):
    # 定义一个变量max,用于存储当前最大的数,初始为None
    max = None
    # 用for循环遍历数列seq中的每个数,并赋值给n
    for n in seq:
        # 如果n不是数字,执行continue语句,跳过当前循环
        if not isinstance(n, (int, float)):
            continue
        # 如果n是数字,判断max是否为None或者n是否大于max
        if max is None or n > max:
            # 如果是,将n赋值给max
            max = n
    # 返回最大的数
    return max

# 定义一个数列(一维列表)
seq = [3, 5, "a", 7, 9, "b", 2]
# 调用查找最大值函数,传入数列seq,并赋值给result
result = find_max(seq)
# 打印结果
print("数列中最大的数为:")
print(result)

案例三:实现一个简单的菜单系统,可以让用户选择不同的功能,并执行相应的操作。

# 定义一个变量choice,用于存储用户当前选择的功能,初始为None
choice = None
# 用while循环接收用户的输入,并进行相应的操作,直到选择退出为止
while choice != "5":
    # 打印菜单
    print("欢迎使用本系统,请选择您要进行的功能:")
    print("1. 查看当前日期和时间")
    print("2. 查看当前温度和湿度")
    print("3. 查看当前网络状态")
    print("4. 查看当前系统信息")
    print("5. 退出系统")
    # 获取用户的输入,并赋值给choice
    choice = input()
    # 如果choice等于"1",表示查看当前日期和时间
    if choice == "1":
        # 导入time模块
        import time
        # 获取当前日期和时间,并赋值给now
        now = time.localtime()
        # 格式化日期和时间,并赋值给date_time
        date_time = time.strftime("%Y-%m-%d %H:%M:%S", now)
        # 打印结果
        print("当前日期和时间为:{}".format(date_time))
    # 如果choice等于"2",表示查看当前温度和湿度
    elif choice == "2":
        # 导入dht模块
        import dht
        # 导入machine模块
        import machine
        # 创建一个DHT11传感器对象,并赋值给sensor
        sensor = dht.DHT11(machine.Pin(4))
        # 测量温度和湿度,并赋值给temperature和humidity
        sensor.measure()
        temperature = sensor.temperature()
        humidity = sensor.humidity()
        # 打印结果
        print("当前温度为:{}℃".format(temperature))
        print("当前湿度为:{}%".format(humidity))
    # 如果choice等于"3",表示查看当前网络状态
    elif choice == "3":
        # 导入network模块
        import network
        # 创建一个WLAN对象,并赋值给wlan
        wlan = network.WLAN(network.STA_IF)
        # 获取WLAN是否激活,并赋值给active
        active = wlan.active()
        # 获取WLAN是否连接,并赋值给connected
        connected = wlan.isconnected()
        # 获取WLAN的IP地址、子网掩码、网关和DNS服务器,并赋值给ip, netmask, gateway, dns
        ip, netmask, gateway, dns = wlan.ifconfig()
        # 打印结果
        print("WLAN是否激活:{}".format(active))
        print("WLAN是否连接:{}".format(connected))
        print("WLAN的IP地址:{}".format(ip))
        print("WLAN的子网掩码:{}".format(netmask))
        print("WLAN的网关:{}".format(gateway))
        print("WLAN的DNS服务器:{}".format(dns))
    # 如果choice等于"4",表示查看当前系统信息
    elif choice == "4":

案例四:打印奇数:

numbers = [1, 2, 3, 4, 5]

for num in numbers:
    if num % 2 == 0:
        continue
    print(num)

print("循环结束")

这个示例使用continue语句在循环中跳过偶数,只打印奇数。当遇到偶数时,continue语句会跳过当前循环迭代,直接进入下一次循环迭代,从而实现只打印奇数的效果。

案例五:跳过特定元素:

fruits = ["apple", "banana", "orange", "grape", "kiwi"]

for fruit in fruits:
    if fruit == "orange":
        continue
    print(fruit)

print("循环结束")

这个示例使用continue语句在循环中跳过特定元素,即"orange"。当遇到"orange"时,continue语句会跳过当前循环迭代,直接进入下一次循环迭代,从而实现跳过"orange"的效果。

案例六:跳过错误输入:

while True:
    try:
        age = int(input("请输入您的年龄:"))
        if age < 0:
            print("年龄不能为负数,请重新输入")
            continue
        break
    except ValueError:
        print("输入无效,请重新输入")

print("您的年龄是:", age)

这个示例使用continue语句在循环中跳过无效的年龄输入。当用户输入无效的年龄(非整数)时,continue语句会跳过当前循环迭代,直接进行下一次循环迭代,要求用户重新输入。直到用户输入有效的年龄为止,循环结束并打印出有效的年龄。

案例七:跳过特定元素并继续循环

numbers = [1, 2, 3, 4, 5]
for number in numbers:
    if number == 3:
        continue
    print(number)

在这个案例中,循环会遍历列表 numbers 中的每个元素。当遇到值为 3 的元素时,使用 continue 语句跳过当前循环,直接进入下一次循环。因此,值为 3 的元素不会被打印出来。

案例八:处理特定条件的元素并继续循环

numbers = [1, 2, 3, 4, 5]
for number in numbers:
    if number % 2 == 0:
        print("偶数:", number)
        continue
    print("奇数:", number)

在这个案例中,循环会遍历列表 numbers 中的每个元素。当遇到偶数时,会打印出相应的消息,并使用 continue 语句跳过当前循环,进入下一次循环。这样可以在特定条件下对元素进行特殊处理。

案例九:跳过无效输入并继续循环

while True:
    user_input = input("请输入一个数字:")
    if not user_input.isdigit():
        print("无效输入,请重新输入。")
        continue
    number = int(user_input)
    print("输入数字的平方:", number ** 2)

在这个案例中,使用 while True 创建了一个无限循环。在循环内部,首先对用户输入进行验证,如果输入的不是有效的数字,会打印出相应的消息,并使用 continue 语句跳过当前循环,要求用户重新输入。只有当输入的是有效的数字时,才会进行后续的处理。

这些案例展示了 MicroPython 中使用 continue 控制语句跳进下次循环的实际应用。通过 continue,可以灵活地跳过特定的元素或无效的输入,继续下一次循环的执行。请注意,在合适的位置使用 continue,以确保循环的正确执行。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值