所以,基本上我想知道为什么这段代码有时会起作用...有时它工作正常,有时会带来索引错误。我有一个带有数据的二维列表4x100。我只是从第三行检索数据,将其全部加在1个变量中。
以下是清单:
a=4
lst = [[] for _ in xrange(a)]
wifi= Wireless('wlan0')
while i<100:
results = wifi.scan()
print cont
print "%-8.16s Scan completed :" % (wifi.ifname,)
for ap in results:
if ap.bssid==AP1:
lst[0].append(ap.quality.getSignallevel())
if ap.bssid==AP2:
lst[1].append(ap.quality.getSignallevel())
if ap.bssid==AP3:
lst[2].append(ap.quality.getSignallevel())
if ap.bssid==AP4:
lst[3].append(ap.quality.getSignallevel())
i=i+1
cont=cont+1
for j4 in range(0,100):
num7=num7+lst[3][j4]
答案 0 :(得分:0)
正如已经提到的那样,没有足够的信息可以告诉您为什么索引超出范围错误。
有几个可能的原因:
wifi.scan()
未在列表中返回4个值。这就是lst
中第三个列表的大小不是100的原因。只需检查results
列表中是否有4个值。
并非所有if语句都由于某种原因而起作用。您需要检查每个ap
项的值 - 只需打印出来并读取值。常量AP1
,AP2
等 - 它们是否正确初始化?
另外,我会使用elif
语句而不只是if
。我认为它会使代码更具可读性和更好。