Python 简易聊天机器人
- 聊天机器人
- |
- |-----MySql
- |
- |---module--“逻辑运算层”
- | |
- | |---ciku--“与词库交互”
- | |
- | |---dicty.txt--"词库"
- | |---sever--
- | |
- | |
- | |---sqlo--
- | |
- | |
- | |---sqlsever--
- | |
- | |
- |
- |---utility-
- | |---sqlhelper--“与数据库交互”
- |
- |
- |----index---“服务器端”
- |
- |----client---“客户端”
代码
index:
- import os,sys
- path_db=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- sys.path.append(path_db)
- from module import server
- def main():
- server.severmain()
- if __name__ == '__main__':
- main()
client:
- import socket
- client = socket.socket()
- ip_port = ("127.0.0.1",6666)
- client.connect(ip_port)
- flag = True
- while flag:
- say = client.recv(1024)
- print(say.decode())
- inp = input("root:")
- client.send(inp.encode())
- if inp == "exit":
- break
module:
ciku:
- from module import sqlsever
- from module import sqlo
- import random
- def checkdata(data):
- f = open("module\dicty","r",encoding="utf-8")
- for info in f:
- if info == "\n":
- continue
- elif info.strip() in data:
- say = f.__next__()
- print(say.strip())
- return say.strip()
- say = [data,"笨蛋我不知道","哎吆,人家不懂","嘿嘿","儿子"]
- say = say[random.randint(0,4)]
- return say
dicty:
只选择词库中一小部分,用的酷Q机器人词库
- 不要哭
- 我不哭谁哭啊,你来? 55555~~~
- 谢谢
- 不用谢,对我来说是小菜一碟的事。
- 谢谢
- 你太客气了,跟我还客气什么啊!
- 回来吧
- 好吧,听你的。
- 回来吧
- 这样的晚上要是有你在身边多好啊!不过你要是陪我玩我会更开心的,发送“游戏”给我吧!
- 回来吧
- 不回,就是不回!
- 你骂人
- 我还要打你呢!!!
- 你骂人
- 不服气么?宝贝儿
- 唱歌
- 我会唱好多歌?想听吗?
- 算了
- 那该怎么办?
- 有啊
- 真的有吗?
- 什么
- 不知道
- 什么
- 我也不知道。
- 什么
- 回去帮你查查。
- 什么
- 你说是什么?
- 笨蛋
- 我是很笨哦,聪明的话就不跟你聊天了。
- 笨蛋
- 笨蛋很好吃的,里面是黄色的。
- 笨蛋
- 嘿嘿。。。
- 笨蛋
- 你都看出来了。
- 多少
- 你说多少就多少。
- 沉默
- 沉默也是一种美德,你知道吗?
- 沉默
- 沉默就是胜利。。。
- 是啊
- 是就好。
- 是啊
- 你讲得到很干脆。
- 是啊
- 呵呵,是就行。
- 公司
- 哪个公司?
- 注册
- 开什么?
- 产品
- 是啊,做产品辛苦呢
- 问题
- 什么问题,告诉我吧,我来帮你
- 服务
- 我不是服务员
- 作者
- 什么作者
- 我的
- 没关系~我有着宽广的胸怀。
- 方式
- 什么方式?你喜欢什么方式
- 因为
- 还所以呢
- 北京
- 北京是中华人民共和国的首都,中国中央四个直辖市之一,中国的政治、文化、外交中心,国内国际交往中心之一,全国第二大城市(仅次于上海市),中国北方最大的城市。这个拥有1700多万人口的城市已经成为一个现代化国际大都市。
sever:
- import socket
- from module import ciku
- from module import sqlo
- def checkinfo(info,data,conn):
- '判断用户输入'
- if info != "".encode():
- sqlo.write_sql("root", data.encode())
- conn.send(data.encode())
- flag = True
- elif info.decode() == "exit":
- flag = False
- else:
- say = sqlo.read_sql()
- conn.send(str(say).encode())
- return flag
- def severcon():
- '建立连接'
- sk = socket.socket()
- ip_port = ("127.0.0.1", 6666)
- sk.bind(ip_port)
- sk.listen(5)
- return sk
- def severmain():
- sk = severcon()
- conn,address = sk.accept()
- say = "你好,我是小白!"
- sqlo.write_sql("root",say.encode())
- conn.send(say.encode())
- flag = True
- while flag:
- info = conn.recv(1024)
- sqlo.write_sql("用户".encode(),info)
- data =ciku.checkdata(info.decode())
- flag =checkinfo(info, data, conn)
- conn.close()
sqlo:
- from module.sqlsever import userinfo
- user = userinfo()
- def write_sql(username,says):
- user.write_record(username,says)
- def read_sql():
- sql_data =user.record()
- return sql_data
sqlsever
- from utility.sql_helper import MySqlHelper
- class userinfo(object):
- def __init__(self):
- self.__helper = MySqlHelper()
- def write_record(self,username,says):
- sql = "insert into jiqiren(username,says) values(%s,%s)"
- params = (username,says)
- return self.__helper.Get_one(sql,params)
- def record(self):
- sql = "select * from jiqiren"
- return self.__helper.Get_one1(sql)
utility:
- import pymysql
- conn_dict = dict(host = "127.0.0.1",user = "root",passwd = "xxxx",db ="xxxx",charset='utf8' )
- class MySqlHelper(object):
- def __init__(self):
- self.__conn_dict = conn_dict
- def Get_one(self,sql,params):
- conn = pymysql.connect(**self.__conn_dict)
- cur = conn.cursor(pymysql.cursors.DictCursor)
- reCount = cur.execute(sql, params)
- conn.commit()
- cur.close()
- conn.close()
- def Get_one1(self,sql):
- conn = pymysql.connect(**self.__conn_dict)
- cur = conn.cursor(pymysql.cursors.DictCursor)
- reCount = cur.execute(sql)
- data = cur.fetchall()
- conn.commit()
- cur.close()
- conn.close()
- return data
聊天与词库交互部分仍不完善。
Python 简易聊天机器人的更多相关文章
- 【翻译】用AIML实现的Python人工智能聊天机器人
前言 用python的AIML包很容易就能写一个人工智能聊天机器人. AIML是Artificial Intelligence Markup Language的简写, 但它只是一个简单的XML. 下面 ...
- 计算机网络课设之基于UDP协议的简易聊天机器人
前言:2017年6月份计算机网络的课设任务,在同学的帮助和自学下基本搞懂了,基于UDP协议的基本聊天的实现方法.实现起来很简单,原理也很简单,主要是由于老师必须要求使用C语言来写,所以特别麻烦,而且C ...
- 情人节用Python智能聊天机器人的实现|制作一个虚拟恋人
首先项目需要的包 import urllib.request import urllib.parse from tkinter import * import time PS:另外很多人在学习Pyth ...
- Python简易聊天工具-基于异步Socket通信
继续学习Python中,最近看书<Python基础教程>中的虚拟茶话会项目,觉得很有意思,自己敲了一遍,受益匪浅,同时记录一下. 主要用到异步socket服务客户端和服务器模块asynco ...
- python微信聊天机器人改进版,定时或触发抓取天气预报、励志语录等,向好友推送
最近想着做一个微信机器人,主要想要实现能够每天定时推送天气预报或励志语录,励志语录要每天有自动更新,定时或当有好友回复时,能够随机推送不同的内容.于是开始了分析思路.博主是采用了多线程群发,因为微信对 ...
- 用python玩微信(聊天机器人,好友信息统计)
1.用 Python 实现微信好友性别及位置信息统计 这里使用的python3+wxpy库+Anaconda(Spyder)开发.如果你想对wxpy有更深的了解请查看:wxpy: 用 Python 玩 ...
- Python进阶开发之网络编程,socket实现在线聊天机器人
系列文章 √第一章 元类编程,已完成 ; √第二章 网络编程,已完成 ; 本文目录 什么是socket?创建socket客户端创建socket服务端socket工作流程图解socket公共函数汇总实战 ...
- 【Python撩妹合集】微信聊天机器人,推送天气早报、睡前故事、精美图片分享
福利时间,福利时间,福利时间 如果你还在为不知道怎么撩妹而烦恼,不知道怎么勾搭小仙女而困惑,又或者不知道怎么讨女朋友欢心而长吁短叹. 那么不要犹豫徘徊,往下看.接下来我会分享怎么使用 Python 实 ...
- 手把手教你用Python代码实现微信聊天机器人 -- Python wxpy
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 来学习了,微信聊天机器人. 环境要求: Windows / Li ...
随机推荐
- (转)Dubbo与Zookeeper、SpringMVC整合和使用
原文地址: https://my.oschina.net/zhengweishan/blog/693163 Dubbo与Zookeeper.SpringMVC整合和使用 osc码云托管地址:http: ...
- spring3 循环依赖
循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终反映为一个环.此处不 ...
- mac下openresty安装
//openresty安装 http://openresty.org/ brew updatebrew install pcre openssl ./configure --prefix=/usr/l ...
- webstorm对WebGL自动提示
默认竟然没有勾选上,怪不得提示的时候,有很多webgl接口找不到方法(虽然可以运行).
- Combinations
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...
- [LeetCode] Word Search II 词语搜索之二
Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ...
- [LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项
Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 在 Sublime Text 3 中配置编译和运行 Java 程序
参考网址:http://www.open-open.com/lib/view/open1388105023765.html 1. 设置 java 的 PATH 环境变量 2. 创建批处理或 Shell ...
- 常用SQL
1. CEILING 向上取整2. FLOOR 向下取整3. FORMATmysql> SELECT FORMAT(12332.123456, 4); -> '12,332.1235'my ...