用Python实现与智能机器人对话

想要用Python来实现与智能机器人对话只需要创建一个服务器端和一个用户端就可以了,彼此的ip地址一致

首先创建服务器端,这里是用了线程和socket模块,

 

代码如下:

from socket import *
import threading

#
#问题库
questionDict ={"苹果":"一种水果,很好吃", "小姐姐":"是对女孩的一种描述", "猪":"是一种动物", "佩奇":"是一直粉色的猪","你好":"你也好", "我爱你":"我也爱你", "小哥哥":"是对男孩的一种描述", "黄瓜":"是一种蔬菜", "小编":"你最帅", "Python":"我的最爱"}
#智能问答机器人服务器
class RobotServer():

    def __init__(self, ip='10.0.14.160', port=8080, connectSize=100):
        '''
        :param ip 根据自己电脑ip地址或者想要连接某个电脑的ip地址
        :param port:服务器端口号
        :param connectSize:服务器默认的并发数量
        '''
        self.__ip = ip
        self.__port = port
        self.__connectSize = connectSize
        pass

    def startServer(self):
        server = socket(AF_INET, SOCK_STREAM)
        server.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
        server.bind((self.__ip, self.__port))
        server.listen(self.__connectSize)
        while True:
            clientConn, clientAddr = server.accept()
            #定义独立的线程,除了每一个用户的请求
            wt = WorkThread(clientConn, clientAddr)  #等待客户端请求
            wt.start()

            pass

        pass
    pass
class WorkThread(threading.Thread):
    def __init__(self, connection, addr, bufferSize=8096):
        threading.Thread.__init__(self)
        self.__connection = connection
        self.__addr = addr
        self.__bufferSize = bufferSize
        pass

    def run(self):

        receiveMsg = self.__connection.recv(self.__bufferSize)
        receiveMsg = receiveMsg.decode("utf-8")
        answer = ""
        for temp in questionDict.keys():
            if temp.count(receiveMsg) > 0:
                answer = questionDict[temp]
                break
                pass
            pass
        if not answer:
            answer = '你说啥'
        self.__connection.send(answer.encode("utf-8"))
        self.__connection.close()
        pass
    pass

if __name__ == "__main__":
    rs = RobotServer()
    rs.startServer()
    pass

客户端代码如下:

import socket
from socket import *
class RobotClient():
    def __init__(self, ip='10.0.14.160', port=8080, bufferSize=8096):
        self.__ip = ip
        self.__port = port
        self.__bufferSize = 8096
        pass

    def startSendMsg(self, msg):

        client = socket(AF_INET, SOCK_STREAM)
        client.connect((self.__ip, self.__port))
        client.send(msg.encode("utf-8"))
        receive = client.recv(self.__bufferSize)
        print(receive.decode('utf-8'))
        client.close()
        pass



    pass
if __name__ == '__main__':
    rc = RobotClient()
    while True:
        msg = input("你说我答:")
        rc.startSendMsg(msg)
        pass

接下来运行结果:

你说我答:你好
你也好
你说我答:我爱你
我也爱你
你说我答:小姐姐
是对女孩的一种描述
你说我答:小哥哥
是对男孩的一种描述
你说我答:小编
你最帅
你说我答:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章