How to fix "IndexError: list index out of range" error of p2p chat application on Python?
How to fix "IndexError: list index out of range" error of p2p chat application on Python?
我正在做 Python 的 p2p 聊天应用程序。有一个错误
"message = inputt[1]" 在客户端。由于这个错误,当我想发送消息时程序打印 "You must write your name "
我不知道如何解决,因为我不明白错误的逻辑。如果我能得到为什么会出现此错误的解释和解决方案,那就太好了。
import socket
import json
import time
import threading
import datetime
onlineUsers = dict()
while True:
message = input()
if(message=='list'):
print('ONLINE USERS...')
for key in onlineUsers:
print(key)
else:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port=5001
try:
inputArray = message.split(':',1)
# 0=username 1=message
username=inputArray[0]
message=inputArray[1]
ip=onlineUsers[username]
s.connect((ip, port))
s.sendall(message)
except:
print("You must write your name <name: message >")
s.close()
我认为问题本身就是问题的线索。打印语句显示 "You must write your name <name: message >"
,因此您的消息将是 john : this is a test
,但您发送的是 this is a test
,当您在 :
上拆分时,它将为您提供单个元素列表 ['this is a test']
并且当您尝试获取此列表的第二个索引时,您会得到 IndexError: list index out of range
因此,如果您修改消息以匹配预期的格式,代码应按如下方式工作
message = 'john : this is a test'
inputArray = message.split(':')
# 0=username 1=message
username = inputArray[0].strip()
message = inputArray[1].strip()
print(username)
print(message)
输出将是
john
this is a test
我正在做 Python 的 p2p 聊天应用程序。有一个错误 "message = inputt[1]" 在客户端。由于这个错误,当我想发送消息时程序打印 "You must write your name "
我不知道如何解决,因为我不明白错误的逻辑。如果我能得到为什么会出现此错误的解释和解决方案,那就太好了。
import socket
import json
import time
import threading
import datetime
onlineUsers = dict()
while True:
message = input()
if(message=='list'):
print('ONLINE USERS...')
for key in onlineUsers:
print(key)
else:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port=5001
try:
inputArray = message.split(':',1)
# 0=username 1=message
username=inputArray[0]
message=inputArray[1]
ip=onlineUsers[username]
s.connect((ip, port))
s.sendall(message)
except:
print("You must write your name <name: message >")
s.close()
我认为问题本身就是问题的线索。打印语句显示 "You must write your name <name: message >"
,因此您的消息将是 john : this is a test
,但您发送的是 this is a test
,当您在 :
上拆分时,它将为您提供单个元素列表 ['this is a test']
并且当您尝试获取此列表的第二个索引时,您会得到 IndexError: list index out of range
因此,如果您修改消息以匹配预期的格式,代码应按如下方式工作
message = 'john : this is a test'
inputArray = message.split(':')
# 0=username 1=message
username = inputArray[0].strip()
message = inputArray[1].strip()
print(username)
print(message)
输出将是
john
this is a test