我正在使用调制解调器,因此调制解调器发送的所有内容都会附加到我的列表中。你知道吗
我必须检索的东西已经在这个列表中了,但是如果我试图按索引打印它,它会返回一个错误,说列表没有这个元素。你知道吗
我知道为什么会发生错误,因为我的列表开始是空的,最后有7个元素。你知道吗
我试图创建一个新的辅助变量,但到目前为止没有任何进展。你知道吗
代码部分:
if (e == 'SBDRING'): #change to format code
print ('Ring Alert recebido')
lido = True
ser.write(str.encode('AT+SBDIX\r'))
time.sleep(5)
ser.write(str.encode('AT+SBDRT\r'))
time.sleep(2)
lista = []
assistvar = 0
while len(lista) < 10:
u = ser.readline()
i = u.rstrip()
o = i.decode('utf-8')
if len(o) > 1 :
lista.append(o)
assistvar = assistvar + 1
print(lista)
print('Lista size = ', len(lista))
print('Assistvar = ', assistvar)
我知道事实上,我的信息将是我名单上的第二个最后的元素。这就是我需要分配给一个新变量的内容,这样我就可以用有问题的消息编程弹出窗口。你知道吗
上述代码的输出为:
Ring Alert recebido
['AT+SBDIX']
Lista size = 1
Assistvar = 1
['AT+SBDIX', '+SBDIX: 0, 196, 1, 126, 11, 5']
Lista size = 2
Assistvar = 2
['AT+SBDIX', '+SBDIX: 0, 196, 1, 126, 11, 5', 'OK']
Lista size = 3
Assistvar = 3
['AT+SBDIX', '+SBDIX: 0, 196, 1, 126, 11, 5', 'OK', 'AT+SBDRT']
Lista size = 4
Assistvar = 4
['AT+SBDIX', '+SBDIX: 0, 196, 1, 126, 11, 5', 'OK', 'AT+SBDRT', '+SBDRT:']
Lista size = 5
Assistvar = 5
['AT+SBDIX', '+SBDIX: 0, 196, 1, 126, 11, 5', 'OK', 'AT+SBDRT', '+SBDRT:', 'jupytertest']
Lista size = 6
Assistvar = 6
['AT+SBDIX', '+SBDIX: 0, 196, 1, 126, 11, 5', 'OK', 'AT+SBDRT', '+SBDRT:', 'jupytertest', 'OK']
Lista size = 7
Assistvar = 7
哪个是我必须找回的。你知道吗
将代码更改为:
print(lista)
if assistvar > 6:
print(lista[5])
break
我得到这个输出:
Ring Alert recebido
['AT+SBDIX']
['AT+SBDIX', '+SBDIX: 18, 198, 2, 0, 0, 0']
['AT+SBDIX', '+SBDIX: 18, 198, 2, 0, 0, 0', 'OK']
谢谢!你知道吗
@编辑: 在你的帮助下找到了办法呵呵。使用我的assistvar,我将循环放入循环中,读取循环中的第五个元素,以便将任何长度大于零的消息添加到列表中。我把它拿出来,现在我只能打印我的信息了!你知道吗
编辑我的代码:
if len(o) > 1 :
lista.append(o)
assistvar = assistvar + 1
print(lista)
if assistvar == 7:
print(lista[5])
break
据我所知,你的代码运行得很好。 https://repl.it/repls/AgitatedNextInverse
但是,如果您只是想查找倒数第二个元素,但在列表为空时遇到问题,请添加一个if case:
但是声音列表当你的列表达到你需要的长度时,你就可以抓住它
列表索引从0开始
示例
输出(索引,元素
相关问题 更多 >
编程相关推荐