当前位置 博文首页 > Python实战整活之聊天机器人

    Python实战整活之聊天机器人

    作者:Temmie1024 时间:2021-06-26 18:32

    一、前言

    刚刚学了一些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)
    

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

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

    二、效果演示

    在这里插入图片描述

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

    在这里插入图片描述

    三、完整代码

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

    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)
    
    js