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]
而不是单独的变量名称来访问各个继电器。
首先,今天是我第一次使用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]
而不是单独的变量名称来访问各个继电器。