Raspberry Pico环境下Python for循环批量操作LED对象的实现问题
Raspberry Pico LED循环点亮实现方案
错误原因
你之前尝试的LED_external_[loop_value]写法不符合Python语法规则:Python不会自动将变量名前缀和循环值拼接为已定义的变量,该写法会被识别为访问名为LED_external_的序列对象的对应下标元素,而你并未定义这个变量,因此会报属性不存在的错误。
最优实现方案(推荐)
直接用列表存储所有LED对象,后续新增LED只需修改引脚列表,无需调整循环逻辑,代码简洁易维护:
from machine import Pin import utime # 新增LED仅需在此处添加对应引脚编号 led_pins = [14, 15, 11] # 批量初始化LED对象,默认全部熄灭 led_list = [Pin(pin, Pin.OUT, value=0) for pin in led_pins] while True: # 遍历所有LED依次点亮熄灭 for led in led_list: led.value(1) utime.sleep(1) led.value(0)
兼容原有变量定义的修改方案
如果你需要保留原有单独定义LED_external_1/2/3变量的写法,只需将所有LED变量存入列表后遍历即可:
from machine import Pin import utime # 你原有定义的三个LED变量 LED_external_1 = Pin(14, Pin.OUT) LED_external_1.value(0) LED_external_2 = Pin(15, Pin.OUT) LED_external_2.value(0) LED_external_3 = Pin(11, Pin.OUT) LED_external_3.value(0) # 将LED变量存入列表 led_list = [LED_external_1, LED_external_2, LED_external_3] while True: for led in led_list: led.value(1) utime.sleep(1) led.value(0)
不推荐的变量名拼接实现方式
如果你一定要按照「前缀+循环值」的方式调用变量,可以通过全局变量字典实现,但该方案可读性差、调试难度高,不建议使用:
for loop_value in range(1,4): led = globals()[f"LED_external_{loop_value}"] led.value(1) utime.sleep(1) led.value(0)
内容的提问来源于stack exchange,提问作者realtime upload
相关产品推荐
相关产品推荐

