我正在尝试找到一个快速测试的解决方案,从而切换一个非常长的变量列表。我将它们命名为:
mcp1pin1
mcp1pin2
mcp1pin3
...
mcp2pin1
mcp2pin2
mcp2pin3
...
因此,手动输入它们将非常困难和冗长,所以我想我可以使用count()函数来完成这项工作。
我试过了:
while True:
count = 0
while count < 16:
mcp1pin(count).value = True
time.sleep(0.1)
mcp1pin(count).value = False
count = count +1
但是我不能让它工作...我觉得我可能快到了。有人对我有什么建议吗?谢谢!
发布于 2021-07-01 10:22:13
首先不要使用太长的变量列表,而是使用像列表这样的数据结构。
您没有提到实际的值是什么,但这里有一些伪代码:
mcps = [
[<mcp1pin1>, <mcp1pin2>, <mcp1pin3>, ...],
[<mcp2pin1>, <mcp2pin2>, <mcp2pin3>, ...],
...
]
对于更具体的示例,您可以这样做:
class Pin:
def __init__(self, value=False):
self.value = False
mcps = [
[Pin() for _ in range(3)]
for _ in range(2)
]
for mcp in mcps:
for pin in mcp:
pin.value = True
虽然,列表从0开始,并且您丢失了名称中的"pin“,因此您可以考虑使用像这样的dicts,尽管它更加笨拙:
mcps = {
i: {'pins': {
j: Pin() for j in range(1, 4)
}}
for i in range(1, 3)
}
for mcp in mcps.values():
for pin in mcp['pins'].values():
pin.value = True
https://stackoverflow.com/questions/68201514
复制相似问题