网络编程
位置:首页>> 网络编程>> Python编程>> Python使用 TCP协议实现智能聊天机器人功能

Python使用 TCP协议实现智能聊天机器人功能

作者:Yvonnae  发布时间:2022-08-19 03:49:48 

标签:Python,TCP,智能聊天,机器人

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

Python使用 TCP协议实现智能聊天机器人功能

源代码:
服务端 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使用 TCP协议实现智能聊天机器人功能

来源:https://blog.csdn.net/m0_53354306/article/details/124651191

0
投稿

猜你喜欢

  • 第一次写博客,实属心血来潮。为什么要写这篇博客呢?原因如下1、有一次我想配置数据库端口号时,找不到对应的解决方案2、是时候有个地方可以记录一
  • 1.sorted函数按key值对字典排序先来基本介绍一下sorted函数,sorted(iterable,key,reverse),sort
  • 什么是死锁,在Go的协程里面死锁通常就是永久阻塞了,你拿着我的东西,要我先给你然后再给我,我拿着你的东西又让你先给我,不然就不给你。我俩都这
  • 约束的概念约束:通过限制用户操作的方式,来达到维护数据本身安全,完整性的一套方案。为什么要有约束? Mysql是一套整体的数据存储解决方案,
  • python路径拼接使用:os.path.join()函数:连接两个或更多的路径名组件如果有一个组件是一个绝对路径,则在它之前的所有组件均会
  • 最近公司的数据库随着业务量的增多,日志文件巨大(超过300G),造成磁盘空间不够用,进而后来的访问数据库请求无法访问。网上类似的方法也很多,
  • 简易网页搜集器前面我们已经学会了简单爬取浏览器页面的爬虫。但事实上我们的需求当然不是爬取搜狗首页或是B站首页这么简单,再不济,我们都希望可以
  • 引言你知道什么是依赖注入吗?依赖注入(DI)的概念虽然听起来很深奥,但是如果你用过一些新兴的php框架的话,对于DI一定不陌生,因为它们多多
  • 当使用Tensorflow训练大量深层的神经网络时,我们希望去跟踪神经网络的整个训练过程中的信息,比如迭代的过程中每一层参数是如何变化与分布
  • 1.字符串反转使用Python切片反转字符串:# Reversing a string using slicingmy_string = &
  • 人生苦短,菜鸟学Python!今天,我们会一次性分享6个堪称神仙的内置函数。在很多计算机书籍中,它们也通常作为高阶函数来介绍。而我自己在日常
  • 由于网上关于Timestamp类的资料比较少,而且官网上面介绍的很模糊,本文只是对如何创建Timestamp类对象进行简要介绍,详情请读者自
  • 前言最近使用PyTorch感觉妙不可言,有种当初使用Keras的快感,而且速度还不慢。各种设计直接简洁,方便研究,比tensorflow的臃
  •     有过网页制作经验的朋友一定知道:一般来讲,把表格的边框定义为1px时,即border=1,而实际上是2
  • 一、javascript是面向对象的编程语言封装:把相关的信息(无论数据或方法)存储在对象中的能力聚集:把一个对象存储在另一个对象内的能力继
  • 这篇文章主要介绍了调用其他python脚本文件里面的类和方法过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
  • Ajax 技术改变了大型商业 Web 应用程序的外观,但是许多较小的 Web 站点都不具备足够的资源重新构建完整的用户界面(UI)。Ajax
  • 空间关系变化始于相遇,所以交点是一切的核心。相交判定首先考察一束光线能否打在某个平面镜上。光线被抽象成了一个列表[a,b,c],平面镜则被抽
  • 本文实例讲述了Python科学计算包numpy用法。分享给大家供大家参考,具体如下:1 数据结构numpy使用一种称为ndarray的类似M
  • SCN(System Change Number)作为oracle中的一个重要机制,在数据恢复、Data Guard、Streams复制、R
手机版 网络编程 asp之家 www.aspxhome.com