网络编程
位置:首页>> 网络编程>> Python编程>> Python实战整活之聊天机器人

Python实战整活之聊天机器人

作者:Temmie1024  发布时间:2022-10-13 09:57:50 

标签:python,聊天机器人

一、前言

刚刚学了一些python文件读写的内容,先跑过来整活了。顺便复习一下之前学的东西。


import time

doc_local='D:\learning_folder\interaction.txt'

def iRead():
   fr = open(doc_local, 'r')
   message=fr.read()
   return message
def iWrite(message):
   fw = open(doc_local, 'w')
   fw.write(message)
   fw.close()
def dTime(num):
   a=time.time()
   b=time.time()
   while (b-a)<num:
       b=time.time()
   return None
answer={'i am temmie':'you are temmie? who am i?','temmie':'temmie!!!','wang!':'wangwangwang!!!'}
iWrite('test begin')
message0 = iRead()
print(message0)
while True:
   dTime(1.0000000)
   mes = iRead()
   if mes!=message0:
       v=answer.get(mes)
       if v==None:
           if mes=='q' :
               print('退出运行')
               break
           else:
               print('message:', mes, end='\t')
               a_out=('temmie say again:{0}'.format(mes))
               message0 = a_out
               iWrite(a_out)
               print(a_out)
       else:
           print('message:', mes, end='\t')
           b_out=('{0}'.format(answer.get(mes)))
           message0 =b_out
           iWrite(b_out)
           print('answer:',b_out)

效果呢,就是你在这个位置的记事本里写东西然后保存,它会回复你消息,如果你说的话在规定的字典中,它就会回你预设好的话。如果没有预设,就会重复你的话(复读机)。

我把每次输入与返回都进行了输出

二、效果演示

Python实战整活之聊天机器人

你甚至可以跟它接crepper,如果你足够闲,也可以整个成语接龙。

Python实战整活之聊天机器人

三、完整代码

三个函数分别定义读取内容、写入内容、与定时


def iRead():
   fr = open(doc_local, 'r')
   message=fr.read()
   return message
def iWrite(message):
   fw = open(doc_local, 'w')
   fw.write(message)
   fw.close()
def dTime(num):
   a=time.time()
   b=time.time()
   while (b-a)<num:
       b=time.time()
   return None

answer是预设回答的字典。

先写入内容,清空之前的文字,提示程序开始。读取文件内容,就是'test begin'


iWrite('test begin')
message0 = iRead()

然后是一个死循环,直到你输入了q,才会退出。

每隔1秒读取一次文件中的内容,如果文件内容没变视为没输入,文件内容变化则对字典进行检索,返回None证明无对应答案,则复读。如果返回了值则输出该值。


while True:
   dTime(1.0000000)
   mes = iRead()
   if mes!=message0:
       v=answer.get(mes)
       if v==None:
           if mes=='q' :
               print('退出运行')
               break
           else:
               print('message:', mes, end='\t')
               a_out=('temmie say again:{0}'.format(mes))
               message0 = a_out
               iWrite(a_out)
               print(a_out)
       else:
           print('message:', mes, end='\t')
           b_out=('{0}'.format(answer.get(mes)))
           message0 =b_out
           iWrite(b_out)
           print('answer:',b_out)

来源:https://blog.csdn.net/Temmie1024/article/details/115980732

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com