python在窗口与机器人聊天_Python如何实现机器人聊天

news/2024/7/6 4:40:08

今天午休的时候,无意之中看了一篇博客,名字叫Python实现机器人,感觉挺有的意思的。

于是用其写了一个简单的Python聊天,源码如下所示:

# -*- coding: utf-8 -*-

import aiml

import sys

import os

def get_module_dir(name):

print("module", sys.modules[name])

path = getattr(sys.modules[name], '__file__', None)

print(path)

if not path:

raise AttributeError('module %s has not attribute __file__' % name)

return os.path.dirname(os.path.abspath(path))

alice_path = get_module_dir('aiml') + '\\botdata\\alice'

os.chdir(alice_path) # 切换到语料库所在工作目录

alice = aiml.Kernel() # 创建机器人alice对象

alice.learn("startup.xml") # 加载...\\botdata\\alice\\startup.xml

alice.respond('LOAD ALICE') # 加载...\\botdata\\alice目录下的语料库

while True:

message = input("Enter your message >> ")

if("exit" == message):

exit()

response = alice.respond(message) # 机器人应答

print(response)

注意:如果出现某某模块找不到的时候,记得使用pip安装对应的模块。

效果图如下所示:

唯一美中不足的是英文,不过没关系,国内有图灵机器人。

代码如下所示:

from urllib.request import urlopen,Request

from urllib.error import URLError

from urllib.parse import urlencode

import json

class TuringChatMode(object):

"""this mode base on turing robot"""

def __init__(self):

# API接口地址

self.turing_url = 'http://www.tuling123.com/openapi/api?'

def get_turing_text(self,text):

''' 请求方式: HTTP POST

请求参数: 参数 是否必须 长度 说明

key 必须 32 APIkey

info 必须 1-32 请求内容,编码方式为"utf-8"

userid 必须 32 MAC地址或ID

'''

turing_url_data = dict(

key = 'fcbf9efe277e493993e889eabca5b331',

info = text,

userid = '60-14-B3-BA-E1-4D',

)

# print("The things to Request is:",self.turing_url + urlencode(turing_url_data))

self.request = Request(self.turing_url + urlencode(turing_url_data))

# print("The result of Request is:",self.request)

try:

w_data = urlopen(self.request)

# print("Type of the data from urlopen:",type(w_data))

# print("The data from urlopen is:",w_data)

except URLError:

raise IndexError("No internet connection available to transfer txt data")

# 如果发生网络错误,断言提示没有可用的网络连接来传输文本信息

except:

raise KeyError("Server wouldn't respond (invalid key or quota has been maxed out)")

# 其他情况断言提示服务相应次数已经达到上限

response_text = w_data.read().decode('utf-8')

# print("Type of the response_text :",type(response_text))

# print("response_text :",response_text)

json_result = json.loads(response_text)

# print("Type of the json_result :",type(json_result))

return json_result['text']

if __name__ == '__main__':

print("Now u can type in something & input q to quit")

turing = TuringChatMode()

while True:

msg = input("\nMaster:")

if msg == 'q':

exit("u r quit the chat !") # 设定输入q,退出聊天。

else:

turing_data = turing.get_turing_text(msg)

print("Robot:",turing_data)

效果图如下:

可能由于机器人智能太低了,有点答非所问。

更多精彩可以去图灵机器人官网了解:http://www.tuling123.com

编程的世界是有趣的,你去探索,你会发现很多有意思的事情。

以上就是Python如何实现机器人聊天的详细内容,更多关于python 实现机器人聊天的资料请关注我们其它相关文章!

本文标题: Python如何实现机器人聊天

本文地址: http://www.cppcns.com/jiaoben/python/343996.html


http://www.niftyadmin.cn/n/1996495.html

相关文章

12 学习里程碑:设计篇完结

到此为止,小册的全部设计篇的章节已经全部完结,后续我们将进入实战的环节。 在正式阅读实战的内容之前,本章我们一起来聊下小册的学习路线与目标。 如何阅读小册 如果是你高级前端或者自学能力较强的话,那么对于你来说技术栈将不…

Drag Drop 全解析

Drag & Drop 全解析 一、基本概念拖放,是指用鼠标拖动的方法,在不同程序的窗口之间、同一个程序的不同窗口之间或同一程序同一窗口的不同控件之间,进行移动、复制和粘贴等操作的技术。拖放操作是在操作系统的帮助下完成的。被拖动…

9.Dart中的类有何不同?

目录传送门:《Flutter快速上手指南》先导篇Dart 使用 class 来定义一个类。定义一个类class Point{var x;var y;Point(x, y){this.x x;this.y y;} } 复制代码在 Dart 中,如果一个类没有显示的定义默认的构造函数,会默认有一个空的构造函数。…

char型变量占几个字节_零基础学C语言(5):浮点型、字符和字符串

上一节,我们重点介绍了bool型和整型数据,并介绍了计算机的三种码制——原码、反码和补码。既然有整型,那当然有非整型,还有字符型和字符串。sizeof前面我们说过,有很多奇怪的、由基本数据类型衍生出来的数据类型&#…

python判断质数合数奇数偶数_【信奥数论】求区间质数(素数)的算法(进阶篇)...

筛选法时间限制: 1000 ms 内存限制: 65536 KB【题目】输入一个正整数n(10 ≤ n ≤ 2109),输出n以内质数的数目。【输入样例】20【输出样例】8【提示】20以内的质数有2,3,5,7,11,13,17,19说明关于质数的基础知识,可以参考上一篇文章:求单个…

linux登陆界面卡死_linux服务器死机了怎么办

linux系统一直都是以开源和稳定著称,相对于Windows来说,linux在稳定性上有着巨大的优势,但是,一个如此庞大复杂的系统,死机的情况还是无法绝对避免的。当linux系统宕机时,我们该如何快速的应对呢?linux系统死机情况也分很多种,最容易导致的就是系统负载过高。还有运行耗用内存…

用 Enhancer 如何实现一次开发,多端适配

点击观看视频演示 如果您还未具备 Enhancer 开发经验,建议您先学习完《快速上手》,在了解平台基本操作之后,再来尝试移动应用开发,这样会事半功倍。 如果您已具备 Enhancer 开发经验,现在就可以直接在工作台创建移动页…

当代优秀男人的标准

当代优秀男人的标准: 轿车一部,楼房三处, 老婆一正三副.正的料理家务,老二陪伴购物,小的暖被褥! 还要有情人无数,晚上想在哪里住就在哪里住!