编写聊天程序的服务端代码和客户端代码。完成后,先启动服务端代码,然 后启动客户端程序输人问题,服务端可以返回相应的答案。要求服务端代码具 有一定的智能,能够根据不完整的问题识别客户端真正要问的问题。 程序运行后界面如下图所示。

- 源代码:
- 服务端 Sever.py:
- from os.path import commonprefix
- from posixpath import split
- import socket
- #建立聊天回复字典
- words={'how are you?':'Fine,thank you.',
- 'how old are you?':'18',
- 'what is your name?':'xiaoming',
- 'which subject do you like?':'computer science',
- 'bye':'Bye'}
- s =socket.socket()
- s.bind(('127.0.0.1',8000))
- s.listen(1)
- clientsocket,clientaddress= s.accept()
- print('Connection from',clientaddress)
- #开始聊天
- while True:
- data=clientsocket.recv(1024).decode()
- if not data:
- break
- print('Received:',data)
- i=0
- key=''
- for k in words.keys():
- data=' '.join(data.split())
- if len(commonprefix([k,data]))>len(k)*0.75:
- key=k
- break
- length=len(set(data.split())&set(k.split()))
- if length>i:
- i=length
- key=k
- clientsocket.sendall(words.get(key,'Sorry,can\'t find the question').encode())
- clientsocket.close()
- 客户端 Client.py:
- import socket
- import sys
- s =socket.socket()
- try:
- s.connect(('127.0.0.1',8000))
- except Exception as e:
- print('Can\'t find the Sever please try again')
- sys.exit()
- while True:
- c=input('Input the content you want to send:')
- s.sendall(c.encode())
- data=s.recv(1024)
- data=data.decode()
- print('Received:',data)
- if c.lower()=='bye':
- break
- s.close()
- 测试用例:
- how are you
- how old are you
- what's your name
- bye


到此这篇关于Python 使用 TCP 实现智能聊天机器人的文章就介绍到这了,更多相关Python智能聊天机器人内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!