【问题标题】:How to fix "IndexError: list index out of range" error of p2p chat application on Python?如何修复 Python 上 p2p 聊天应用程序的“IndexError: list index out of range”错误?
【发布时间】:2019-05-12 00:47:56
【问题描述】:

我正在用 Python 做 p2p 聊天应用程序。有一个错误 客户端的“message = inputt [1]”。由于这个错误,当我想发送消息时,程序会打印“你必须写下你的名字”

我不知道如何解决,因为我不明白错误的逻辑。如果我能解释为什么会出现此错误以及解决方案,那就太好了。

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()

【问题讨论】:

  • print(inputArray) 的输出是什么?
  • 我写了“这是一个测试”作为消息,输出是“['这是一个测试']”
  • 知道了,谢谢@buchic,看看我下面的回答对你有没有帮助!
  • 非常感谢@DeveshKumarSingh 的努力。其实我还有几个问题。我通过 LinkedIn 给你发了短信。你能检查一下吗?
  • 太棒了!很高兴能帮上忙:)如果对您有帮助,请标记已接受的答案@buchic :)

标签: python python-3.x network-programming tcpclient p2p


【解决方案1】:

我认为问题所在的线索在于问题本身。打印语句显示"You must write your name &lt;name: message &gt;",因此您的消息将是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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 2014-10-20
    相关资源
    最近更新 更多