【发布时间】:2018-10-04 15:46:31
【问题描述】:
我的目标是能够在我的程序运行后立即看到可用的 i2c 地址列表。当前程序可以通过以下代码通过用户输入列出地址:
while True:
if input.upper().startswith("LIST_ADDR"):
devices = device.list_i2c_devices()
for i in range(len (devices)):
print devices[i]
我已经能够使用仅使用底部 3 行的代码,但是我现在有五个 i2c 设备当前连接到 Pi。仅使用三行代码就可以得到 IndexError: string index out of range。为此,我可以继续调用该程序大约四五次,然后它将毫无问题地运行。我只是想知道是否有更好的方法来实现我正在寻找的程序要做的事情而不会出现错误。
我对编码还是很陌生,所以提前感谢您的耐心等待。
【问题讨论】:
-
为什么不
for device in devices:? -
这真的是准确的代码吗?因为我不明白这个错误是如何发生的。如果
devices是列表或字符串,则range(len(devices))保证返回有效索引。只有在循环内修改devices时才会发生该错误。 -
@Barmar 是的,这是我正在使用的确切代码。我只是想删除输入提示而不会收到错误。未修改循环中的设备。
-
代码中没有输入提示。
input不应该是input()吗?如果这是 Python 2.x,从你使用print的方式来看,它应该是raw_input()来获取字符串。
标签: python linux raspberry-pi i2c