小鱼每天都能收到一些私信,小鱼都有很认真的回复哦。不过在客服行业,面对顾客一些简单的问题,一般企业会设置自动回复的程序,这样可以大大减少客户等待和客服服务时间。
今天小鱼就给大家介绍怎么开发一款聊天机器人,这个聊天机器人很好玩哦,它可以陪你聊任何你想聊的话题哦,下面我们开始吧 : )
【基础知识】
1.字符串格式化: 有两种方法,分别是使用 % 和使用 format 函数
1.1.使用%
1.1.1.分类图:
1.1.2.代码
#print('字符串1 %s' % '字符串2')
#print('字符串1 %d '% 数字)
#print('字符串1 %f' % 浮点数 )
1.2.使用format函数
1.2.1.代码
# '{ }'.format('') 格式在前,内容在后
#"我来{},学习{}".format("小白教程 ","Python ")
#"我来{0},学习{1}".format("小白教程","Python")
#"{0}来{1},{0}学习{2}".format("我","小白教程","Python")
#"欢迎{name}来到{location},{location}是专注于{what}的专栏".format(what="python",location="小白教程",name="你")
1.2.3.补充知识; 使用format函数格式化数字
1.2.3.1分类图
1.2.3.2.代码
#print('{ }'.format( ))
# 保留小数点后2点
print('{:2f}'.format(3.1415926))
# 保留符号,并且保留小数点后2位
print('{:+2f}'.format(3.1415926))
# 不带小数
print('{:0f}'.format(3.1415926))
# 使用%号进行显示,显示小数点后3位
print('{:.2%}'.format(3.1415926))
2.字符串查找:
字符串查找的意思就是从一个字符串中找到一个或多个字符,这个字符可以是中文也可以是英文或者标点。
2.1. 代码
# " ".find(" ")
# print("我是字符串".find("我"))
# print("I am String".find("s"))
# print('I am String 2'.'find("2")
上边的代码式的打印的结果分别是是0、-1和12。小伙伴们是不是很奇怪,怎么会是这种结果?下面小鱼给大家一一解释。
print("我是字符串".find("我")):绝大部分的语言对于位置的计算都是从0开始的,所以‘我’在 0 的位置上,打印结果为 0 。
print("I am String".find("s")):有可能你也猜到了-1 是什么意思了。是的,这代表着并没有从字符串"I am String"中找到字符串"s",那么这里的-1就是代表没有找到。这里需要注意的是字符串查找是区分大小写的,所以s并不等于S。
print('I am String 2'.'find("2"):这个代码的意思就是从字符串"I am String 2"中的第12个位置找到了字符串"2"。注意空格也是占用一个字符位置哦。
2.2.成员运算
查找字符串的方式我们可以判断一个字符串是否在另外一个字符串里,我们还可以通过另外一种办法,就是通过成员运算的方式.
成员运算非常的简单,它只有两种方式。
第一种的关键字是in,比如我们想要判断"学习"是否在"我在贪心学院学习"里,那么我们就可以写成:
b = "学习" in "我在贪心学院学习"
print(b)
第二种的关键字是not in,它就是英文的直观翻译,in代表是否存在,那么not in就代表不存在的意思。写成代码就可以是这样的形式:
b = "学习" not in "我在贪心学院学习"
print(b)
注意:进行成员运算,表达式所返回的都是布尔类型的值。上述例子中的b只有两个可能的值,True或者是False。
【开发程序】
思考:自动回复实际上就是识别问题中的关键字,利用自动化程序回应对应关键字的答案
"""
我们判断关键字是否在字符串中时
可以使用字符串查找的办法,也可以使用成员运算符in或是not in
需要注意的是当使用字符串查找时,返回的是位置信息,只有当位置信息大于-1时,就证明找到了
"""
while True:
user_message = input("我:")
# 这里使用了成员运算符in来进行关键字是否存在的判断
if "名字" in user_message:
print("机器人:我叫小贪,是一个可爱的机器人")
# 这里使用了字符串查找的方式进行关键字是否存在的判断
elif user_message.find("学习") > -1:
print("机器人:我在贪心学院学习Python呢,一起来学习吧!")
elif "老师" in user_message:
print("机器人:大周老师啊,你连这个都不知道啊!!!小贪都知道。")
elif "喜欢" in user_message and "人" in user_message:
print("机器人:小贪喜欢的人有很多啊,各位老师和同学我都喜欢。")
elif "喜欢" in user_message and "水果" in user_message:
print("机器人:我喜欢的水果有很多啊,比如苹果、西瓜等。")
elif "再见" in user_message:
print("机器人:再见,小贪会想你的哦")
# 注意,这里一定要跳出循环,如果没有跳出逻辑,那就变成了死循环了
break
else:
print("机器人:对不起,小贪没有听懂你说的是什么")
你可能也注意到了,在我们输出的信息中有一部分是重复的,比如"机器人",还有就是"喜欢",这些词。我们可以把它们单独拿出来,这样做的好处是当我们想修改的时候只修改一处就可以。下面我们进行一下修改,并且把"喜欢"变成”爱”。
# 这里把部分关键词抽取出来
robot = "小贪"
like = "爱"
while True:
user_message = input("我:")
# 这里使用了成员运算符in来进行关键字是否存在的判断
if "名字" in user_message:
print("{0}:我叫小贪,是一个可爱的机器人".format(robot))
# 这里使用了字符串查找的方式进行关键字是否存在的判断
elif user_message.find("学习") > -1:
print("{0}:我在贪心学院学习Python呢,一起来学习吧!".format(robot))
elif "老师" in user_message:
print("{0}:大周老师啊,你连这个都不知道啊!!!小贪都知道。".format(robot))
elif "喜欢" in user_message and "人" in user_message:
print("{0}:小贪{1}的人有很多啊,各位老师和同学我都喜欢。".format(robot, like))
elif "喜欢" in user_message and "水果" in user_message:
print("{0}:我{1}的水果有很多啊,比如苹果、西瓜等。".format(robot, like))
elif "再见" in user_message:
print("{0}:再见,小贪会想你的哦".format(robot))
# 注意,这里一定要跳出循环,如果没有跳出逻辑,那就变成了死循环了
break
else:
print("{0}:对不起,小贪没有听懂你说的是什么".format(robot))
大家有没有很喜欢自己制作的迷你机器人呢,小鱼介绍给大家这个是无聊的时候玩的,或者有正经用途的时候用啊,希望不会有单身狗靠这个度过余生哈