lxa000 发表于 2025-1-6 02:04:37

请教python代码只执行一半

试着改进一段python代码
作用是4个led顺序点亮,然后再倒序熄灭。

改完后运行4个led顺序点亮正常,后就不再变化了。
请教坛友:代码哪里不对了?应该怎样改进?
先谢谢!


#LED流水灯:先熄灭4个LED,然后逐个点亮4个LED,反复进行
from machine import Pin   
import time               

def ledz():   
    ledpinz=   
    leds=[]                        
    for i in range(4):            
      leds.append(Pin(ledpinz,Pin.OUT))      
    for n in range(4):            
         while True:                                                   
             for n in range(4):      
               leds.value(1)   
               time.sleep(0.3)      
             time.sleep(0.3)                     
def ledf():
    ledpinf=   
    leds=[]               
    for i in range(4):            
      leds.append(Pin(ledpinf,Pin.OUT))
    for n in range(4):      
         while True:
            for n in range(4):      
                leds.value(0)
                time.sleep(0.3)   
            time.sleep(0.3)
try:
    while True:
         ledz()               
         ledf()                  
except KeyboardInterrupt:
    pass

only5784 发表于 2025-1-9 17:07:55

ai分析的

junyee 发表于 2025-1-7 09:29:22

lxa000 发表于 2025-1-6 23:36
按你说的改进后 如下 :


import time
from machine import Pin

ledpins = [ Pin(v, Pin.OUT) for v in ]
ledstats =


def led_ctrl():
      for i,v in enumerate(ledstats):
                ledpins.value(v)
##

while True:
      for i in range(4):
                ledstats = 1
                led_ctrl()
                time.sleep(1)
               
      for i in range(4):
                ledstats = 0
                led_ctrl()
                time.sleep(1)

佚天 发表于 2025-1-6 09:21:57

while True:                                                   
             for n in range(4):      
               leds.value(1)   
               time.sleep(0.3)      
             time.sleep(0.3)   


执行到这段时,这死循环在这里出不去了。

junyee 发表于 2025-1-6 09:10:03


看来是个新手。
给你写一个:

import time
from machine import Pin

ledpins = [ Pin(v, Pin.OUT) for v in ]
ledstats =


def led_ctrl():
        for i,v in enumerate(ledstats):
                ledpins.value(v)
##

while True:
        for i in range(4):
                ledstats = 1 if ledstats == 0 else 0
                led_ctrl()
                time.sleep(1)

aidn 发表于 2025-1-6 05:29:48

ai修改from machine import Pin    import time                   def ledz():      """   控制 4 个 LED 逐个点亮的函数   """   ledpinz =       leds = []                           for i in range(4):                     leds.append(Pin(ledpinz, Pin.OUT))             for _ in range(4):# 这里使用 _ 替代 n,避免与内层循环的变量名冲突         for led in leds:# 直接遍历 leds 列表             led.value(1)                  time.sleep(0.3)               time.sleep(0.3)                         def ledf():   """   控制 4 个 LED 逐个熄灭的函数   """   ledpinf =       leds = []                      for i in range(4):                     leds.append(Pin(ledpinf, Pin.OUT))       for _ in range(4):# 这里使用 _ 替代 n,避免与内层循环的变量名冲突         for led in leds:# 直接遍历 leds 列表             led.value(0)             time.sleep(0.3)            time.sleep(0.3)try:   """   主程序,不断交替执行逐个点亮和逐个熄灭的操作   """   while True:          ledz()                         ledf()                     except KeyboardInterrupt:   """   捕获键盘中断异常,通常用于在程序运行时通过键盘操作中断程序   """   pass

dianziwg 发表于 2025-1-6 08:55:45

好奇,这是用来控制哪个上面的led啊?

lxa000 发表于 2025-1-6 13:44:27

佚天 发表于 2025-1-6 09:21
while True:                                                   
             for n in range(4):      ...

非常感谢上面坛友的解答。

我会根据你们的指导继续试验。

lxa000 发表于 2025-1-6 13:46:06

dianziwg 发表于 2025-1-6 08:55
好奇,这是用来控制哪个上面的led啊?

我外接了 4个led和 4个按键。


lxa000 发表于 2025-1-6 14:02:30

刚才试了junyee,aidn两位坛友的代码,
都是顺序点亮顺序熄灭的 。
我想要顺序点亮,倒序熄灭的 。

junyee 发表于 2025-1-6 19:50:51

13行 后改成:


while True:
        for i in range(4):
                ledstats = 1
                led_ctrl()
                time.sleep(0.5)
               
        for i in range(4):
                ledstats = 0
                led_ctrl()
                time.sleep(1)

lxa000 发表于 2025-1-6 23:36:06

junyee 发表于 2025-1-6 19:50
13行 后改成:

按你说的改进后 如下 :



qyg123 发表于 2025-1-7 00:50:34

查了一下发现RP2040单片机挺强大的,应该很好玩。

lxa000 发表于 2025-1-7 20:41:19

junyee 发表于 2025-1-7 09:29


ok!
这回成了。
非常感谢!

lxa000 发表于 2025-1-7 20:44:02

qyg123 发表于 2025-1-7 00:50
查了一下发现RP2040单片机挺强大的,应该很好玩。

是的 。
用这种单片机做啥子数控收音机/数控稳压电源/电子手表。。。
都不在话下。

所以现在暂时放下51
转到学习ESP32。

lxa000 发表于 2025-1-8 18:22:13

junyee 发表于 2025-1-6 19:50
13行 后改成:

你昨天发的代码咋没了 ?

今天拍了一下段视频:
页: [1] 2
查看完整版本: 请教python代码只执行一半