Python 帮助使用for循环改变x

Python help using for loop to change x

首先,今天是我第一次使用Python。我在 15 年前使用过 Perl,虽然生疏但渴望学习。我正在尝试将以下行转换为 for 循环,使用 x 增加 ONrelay(因此 ONrelay0、ONrelay1、ONrelay3 等等):

cpi6x.setbit(board1, cpi6x.ONrelay0)
time.sleep(.300)
cpi6x.setbit(board1, cpi6x.ONrelay1)
time.sleep(.300)
cpi6x.setbit(board1, cpi6x.ONrelay2)
time.sleep(.300)
cpi6x.setbit(board1, cpi6x.ONrelay3)
time.sleep(.300)
cpi6x.setbit(board1, cpi6x.ONrelay4)

我已经尝试了以下方法,但毫不奇怪它不起作用。

for x in range(0, 5):
    cpi6x.setbit(board1, cpi6x.ONrelay%d) % (x)
    time.sleep(.300)

如有任何帮助,我们将不胜感激!

那行不通,因为 ONrelay 不是字符串,而是实例属性,请改用 getattr

for i in range(5):
    obj = getattr(cpi6x, 'ONrelay{}'.format(i))
    cpi6x.setbit(board1, obj)
    time.sleep(.300)

将继电器放在一个数组中会更容易和更 Pythonic:

relays = [cpi6x.ONrelay0,
          cpi6x.ONrelay1,
          cpi6x.ONrelay2,
          cpi6x.ONrelay3,
          cpi6x.ONrelay4]

for relay in relays:
    cpi6x.setbit(board1, relay)
    time.sleep(.300)

您还可以使用 relays[x] 而不是单独的变量名称来访问各个继电器。