Python使用 TCP协议实现智能聊天机器人功能
作者:Yvonnae 时间:2022-08-19 03:49:48
编写聊天程序的服务端代码和客户端代码。完成后,先启动服务端代码,然 后启动客户端程序输人问题,服务端可以返回相应的答案。要求服务端代码具 有一定的智能,能够根据不完整的问题识别客户端真正要问的问题。 程序运行后界面如下图所示。
源代码:
服务端 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
来源:https://blog.csdn.net/m0_53354306/article/details/124651191
标签:Python,TCP,智能聊天,机器人
0
投稿
猜你喜欢
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2024-05-09 09:39:07
JavaScript程序执行顺序问题总结
2010-01-29 13:06:00
pycharm 实现光标快速移动到括号外或行尾的操作
2023-07-17 19:52:31
Pytorch中的广播机制详解(Broadcast)
2022-11-17 05:22:51
OpenCV特征提取与检测之Harris角点检测
2021-06-05 10:45:51
Clion ROS开发环境设置技巧
2023-11-01 02:36:32
用 ASP 创建 GUID
2009-04-19 18:43:00
CSS实现HTML元素透明的那些事
2010-02-01 12:34:00
oracle数据库冷备份的方法
2023-07-19 09:51:19
机器学习的框架偏向于Python的13个原因
2023-09-28 06:24:42
PHP字符串中提取文件名的实例方法
2023-06-12 18:57:32
python四则运算表达式求值示例详解
2023-01-31 06:03:04
ASP教程:0177:800401f3错误解决
2008-08-02 12:41:00
django基础学习之send_mail功能
2023-04-01 00:16:53
React TypeScript 应用中便捷使用Redux Toolkit方法详解
2023-08-11 09:48:21
div水平垂直居中方法(淘宝招聘css题目)
2007-10-25 12:48:00
网页设计五原则
2007-11-03 13:50:00
使用cookie和application实现在线人数统计
2007-09-18 13:01:00
网马解密大讲堂——网马解密中级篇(Freshow工具使用方法)
2009-09-16 15:09:00
Django配置MySQL数据库的完整步骤
2023-07-19 14:43:47