1. 聊天机器人
  2. |
  3. |-----MySql
  4. |
  5. |---module--“逻辑运算层”
  6. | |
  7. | |---ciku--“与词库交互”
  8. | |
  9. | |---dicty.txt--"词库"
  10. | |---sever--
  11. | |
  12. | |
  13. | |---sqlo--
  14. | |
  15. | |
  16. | |---sqlsever--
  17. | |
  18. | |
  19. |
  20. |---utility-
  21. | |---sqlhelper--“与数据库交互”
  22. |
  23. |
  24. |----index---“服务器端”
  25. |
  26. |----client---“客户端”

代码

index:

  1. import os,sys
  2.  
  3. path_db=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  4. sys.path.append(path_db)
  5.  
  6. from module import server
  7.  
  8. def main():
  9. server.severmain()
  10.  
  11. if __name__ == '__main__':
  12. main()

client:

  1. import socket
  2.  
  3. client = socket.socket()
  4. ip_port = ("127.0.0.1",6666)
  5. client.connect(ip_port)
  6. flag = True
  7. while flag:
  8. say = client.recv(1024)
  9. print(say.decode())
  10. inp = input("root:")
  11. client.send(inp.encode())
  12. if inp == "exit":
  13. break

module:

ciku:

  1. from module import sqlsever
  2. from module import sqlo
  3. import random
  4.  
  5. def checkdata(data):
  6. f = open("module\dicty","r",encoding="utf-8")
  7.  
  8. for info in f:
  9. if info == "\n":
  10. continue
  11. elif info.strip() in data:
  12. say = f.__next__()
  13. print(say.strip())
  14. return say.strip()
  15.  
  16. say = [data,"笨蛋我不知道","哎吆,人家不懂","嘿嘿","儿子"]
  17. say = say[random.randint(0,4)]
  18. return say

dicty:

只选择词库中一小部分,用的酷Q机器人词库

  1. 不要哭
  2. 我不哭谁哭啊,你来? 55555~~~
  3.  
  4. 谢谢
  5. 不用谢,对我来说是小菜一碟的事。
  6.  
  7. 谢谢
  8. 你太客气了,跟我还客气什么啊!
  9.  
  10. 回来吧
  11. 好吧,听你的。
  12.  
  13. 回来吧
  14. 这样的晚上要是有你在身边多好啊!不过你要是陪我玩我会更开心的,发送“游戏”给我吧!
  15.  
  16. 回来吧
  17. 不回,就是不回!
  18.  
  19. 你骂人
  20. 我还要打你呢!!!
  21.  
  22. 你骂人
  23. 不服气么?宝贝儿
  24.  
  25. 唱歌
  26. 我会唱好多歌?想听吗?
  27.  
  28. 算了
  29. 那该怎么办?
  30.  
  31. 有啊
  32. 真的有吗?
  33.  
  34. 什么
  35. 不知道
  36.  
  37. 什么
  38. 我也不知道。
  39.  
  40. 什么
  41. 回去帮你查查。
  42.  
  43. 什么
  44. 你说是什么?
  45.  
  46. 笨蛋
  47. 我是很笨哦,聪明的话就不跟你聊天了。
  48.  
  49. 笨蛋
  50. 笨蛋很好吃的,里面是黄色的。
  51.  
  52. 笨蛋
  53. 嘿嘿。。。
  54.  
  55. 笨蛋
  56. 你都看出来了。
  57.  
  58. 多少
  59. 你说多少就多少。
  60.  
  61. 沉默
  62. 沉默也是一种美德,你知道吗?
  63.  
  64. 沉默
  65. 沉默就是胜利。。。
  66.  
  67. 是啊
  68. 是就好。
  69.  
  70. 是啊
  71. 你讲得到很干脆。
  72.  
  73. 是啊
  74. 呵呵,是就行。
  75.  
  76. 公司
  77. 哪个公司?
  78.  
  79. 注册
  80. 开什么?
  81.  
  82. 产品
  83. 是啊,做产品辛苦呢
  84.  
  85. 问题
  86. 什么问题,告诉我吧,我来帮你
  87.  
  88. 服务
  89. 我不是服务员
  90.  
  91. 作者
  92. 什么作者
  93.  
  94. 我的
  95. 没关系~我有着宽广的胸怀。
  96.  
  97. 方式
  98. 什么方式?你喜欢什么方式
  99.  
  100. 因为
  101. 还所以呢
  102.  
  103. 北京
  104. 北京是中华人民共和国的首都,中国中央四个直辖市之一,中国的政治、文化、外交中心,国内国际交往中心之一,全国第二大城市(仅次于上海市),中国北方最大的城市。这个拥有1700多万人口的城市已经成为一个现代化国际大都市。

sever:

  1. import socket
  2. from module import ciku
  3. from module import sqlo
  4.  
  5. def checkinfo(info,data,conn):
  6. '判断用户输入'
  7. if info != "".encode():
  8. sqlo.write_sql("root", data.encode())
  9. conn.send(data.encode())
  10. flag = True
  11. elif info.decode() == "exit":
  12. flag = False
  13. else:
  14. say = sqlo.read_sql()
  15. conn.send(str(say).encode())
  16. return flag
  17.  
  18. def severcon():
  19. '建立连接'
  20. sk = socket.socket()
  21. ip_port = ("127.0.0.1", 6666)
  22. sk.bind(ip_port)
  23. sk.listen(5)
  24. return sk
  25.  
  26. def severmain():
  27. sk = severcon()
  28. conn,address = sk.accept()
  29. say = "你好,我是小白!"
  30. sqlo.write_sql("root",say.encode())
  31. conn.send(say.encode())
  32.  
  33. flag = True
  34. while flag:
  35. info = conn.recv(1024)
  36. sqlo.write_sql("用户".encode(),info)
  37. data =ciku.checkdata(info.decode())
  38. flag =checkinfo(info, data, conn)
  39. conn.close()

sqlo:

  1. from module.sqlsever import userinfo
  2.  
  3. user = userinfo()
  4.  
  5. def write_sql(username,says):
  6. user.write_record(username,says)
  7.  
  8. def read_sql():
  9. sql_data =user.record()
  10. return sql_data

sqlsever

  1. from utility.sql_helper import MySqlHelper
  2.  
  3. class userinfo(object):
  4.  
  5. def __init__(self):
  6. self.__helper = MySqlHelper()
  7.  
  8. def write_record(self,username,says):
  9. sql = "insert into jiqiren(username,says) values(%s,%s)"
  10. params = (username,says)
  11. return self.__helper.Get_one(sql,params)
  12. def record(self):
  13. sql = "select * from jiqiren"
  14. return self.__helper.Get_one1(sql)

utility:

  1. import pymysql
  2.  
  3. conn_dict = dict(host = "127.0.0.1",user = "root",passwd = "xxxx",db ="xxxx",charset='utf8' )
  4.  
  5. class MySqlHelper(object):
  6.  
  7. def __init__(self):
  8. self.__conn_dict = conn_dict
  9.  
  10. def Get_one(self,sql,params):
  11. conn = pymysql.connect(**self.__conn_dict)
  12. cur = conn.cursor(pymysql.cursors.DictCursor)
  13. reCount = cur.execute(sql, params)
  14. conn.commit()
  15. cur.close()
  16. conn.close()
  17.  
  18. def Get_one1(self,sql):
  19. conn = pymysql.connect(**self.__conn_dict)
  20. cur = conn.cursor(pymysql.cursors.DictCursor)
  21.  
  22. reCount = cur.execute(sql)
  23. data = cur.fetchall()
  24. conn.commit()
  25. cur.close()
  26. conn.close()
  27. return data

 聊天与词库交互部分仍不完善。

Python 简易聊天机器人的更多相关文章

  1. 【翻译】用AIML实现的Python人工智能聊天机器人

    前言 用python的AIML包很容易就能写一个人工智能聊天机器人. AIML是Artificial Intelligence Markup Language的简写, 但它只是一个简单的XML. 下面 ...

  2. 计算机网络课设之基于UDP协议的简易聊天机器人

    前言:2017年6月份计算机网络的课设任务,在同学的帮助和自学下基本搞懂了,基于UDP协议的基本聊天的实现方法.实现起来很简单,原理也很简单,主要是由于老师必须要求使用C语言来写,所以特别麻烦,而且C ...

  3. 情人节用Python智能聊天机器人的实现|制作一个虚拟恋人

    首先项目需要的包 import urllib.request import urllib.parse from tkinter import * import time PS:另外很多人在学习Pyth ...

  4. Python简易聊天工具-基于异步Socket通信

    继续学习Python中,最近看书<Python基础教程>中的虚拟茶话会项目,觉得很有意思,自己敲了一遍,受益匪浅,同时记录一下. 主要用到异步socket服务客户端和服务器模块asynco ...

  5. python微信聊天机器人改进版,定时或触发抓取天气预报、励志语录等,向好友推送

    最近想着做一个微信机器人,主要想要实现能够每天定时推送天气预报或励志语录,励志语录要每天有自动更新,定时或当有好友回复时,能够随机推送不同的内容.于是开始了分析思路.博主是采用了多线程群发,因为微信对 ...

  6. 用python玩微信(聊天机器人,好友信息统计)

    1.用 Python 实现微信好友性别及位置信息统计 这里使用的python3+wxpy库+Anaconda(Spyder)开发.如果你想对wxpy有更深的了解请查看:wxpy: 用 Python 玩 ...

  7. Python进阶开发之网络编程,socket实现在线聊天机器人

    系列文章 √第一章 元类编程,已完成 ; √第二章 网络编程,已完成 ; 本文目录 什么是socket?创建socket客户端创建socket服务端socket工作流程图解socket公共函数汇总实战 ...

  8. 【Python撩妹合集】微信聊天机器人,推送天气早报、睡前故事、精美图片分享

    福利时间,福利时间,福利时间 如果你还在为不知道怎么撩妹而烦恼,不知道怎么勾搭小仙女而困惑,又或者不知道怎么讨女朋友欢心而长吁短叹. 那么不要犹豫徘徊,往下看.接下来我会分享怎么使用 Python 实 ...

  9. 手把手教你用Python代码实现微信聊天机器人 -- Python wxpy

    关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 来学习了,微信聊天机器人. 环境要求: Windows / Li ...

随机推荐

  1. (转)Dubbo与Zookeeper、SpringMVC整合和使用

    原文地址: https://my.oschina.net/zhengweishan/blog/693163 Dubbo与Zookeeper.SpringMVC整合和使用 osc码云托管地址:http: ...

  2. spring3 循环依赖

    循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终反映为一个环.此处不 ...

  3. mac下openresty安装

    //openresty安装 http://openresty.org/ brew updatebrew install pcre openssl ./configure --prefix=/usr/l ...

  4. webstorm对WebGL自动提示

    默认竟然没有勾选上,怪不得提示的时候,有很多webgl接口找不到方法(虽然可以运行).

  5. Combinations

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  6. [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 ...

  7. [LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  8. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  9. 在 Sublime Text 3 中配置编译和运行 Java 程序

    参考网址:http://www.open-open.com/lib/view/open1388105023765.html 1. 设置 java 的 PATH 环境变量 2. 创建批处理或 Shell ...

  10. 常用SQL

    1. CEILING 向上取整2. FLOOR 向下取整3. FORMATmysql> SELECT FORMAT(12332.123456, 4); -> '12,332.1235'my ...