当前位置:首页 / 文章测试 / 客服机器人

客服机器人

开始打字练习

import random

import jieba

import time

class Robot():

def __init__(self, name):

print('*' * 18 + '启动成功' + '*' * 18)

self.name = name

self.say_hi = ['你好', 'Hi', 'Hello', 'hi', 'hello', '好久不见']

self.say_bye = ['再见', 'Bye', 'bye', 'Bye-bye', 'Byebye', '再会', '回见', '88', '下次见']

def chat(self):

flag = False

while True:

msg = input('你说:')

jieba.load_userdict('words_dict.txt')

words = jieba.lcut(msg)

for word in words:

if word in self.say_hi:

print('{}说:{}'.format(self.name, random.choice(self.say_hi)))

break

elif word in self.say_bye:

print('{}说:{}'.format(self.name, random.choice(self.say_bye)))

flag = True

break

else:

print('{}说:我听不懂'.format(self.name))

if flag:

break

#自定义客服类,继承机器人类

class KeFu(Robot):

def __init__(self,name): #构造函数,初始化

Robot.__init__(self,name) #继承父类的所有属性

self.options = {'环境':'','服务':'','菜品':''} #新增客服类的评价属性options,存储关于环境,服务和菜品的评价

self.star = 0 #新增客服类的评分属性,初始分数为0

def chat(self): #chat()方法的重写,实例方法——输入评价内容

print('顾客您好,{}为您提供服务!'.format(self.name)) #提示语

for i in self.options.keys(): #遍历评价属性options中的所有键,环境,服务,菜品

while True: #无限循环

a = input('请对{}进行评价:'.format(i)) #依次输入对该项的具体评价内容

if a.strip()=='': #如果输入的是空

print('没有评价内容,请重新输入')

else: #如果输入的不是空字符串

self.options[i]=a #讲输入的评价内容存到该键的对应值上

break #跳出循环

while True:

self.star = int(input('请对餐厅进行综合评分:')) #将输入的评分字符串转换成整数

if self.star>=1 and self.star<=5: #如果输入的分数是在1-5之间,跳出循环

break

else: #输入的分数超出范围,重新输入

print('输入错误,只能输入1至5之间的整数')

def cun(self): #实例方法——存储评价内容

self.ping = [] #评价内容用列表存储

xing = self.star*'。'+(5-self.star)*'.' #根据得分显示星星

shi = time.strftime('%Y-%m-%d %H:%M:%S') #获得当前具体时间:年-月-日 时-分-秒

self.ping.append(xing+','+shi+'\n') #将得到的星星和时间追加到评价内容中

for i in self.options.keys(): #依次遍历评价属性中的所有键

self.ping.append(i+':'+self.options[i]+'\n') #将键和值的内容连接起来

self.ping.append('-'*20+'\n') #每个评价之间用一行符号隔开

ke = KeFu('客服机器人') #使用KeFu类创建ke对象,传入客服机器人name属性

ke.chat() #对象ke调用chat()方法输入评价内容

#print(ke.star)

ke.cun() #对象ke调用cun()方法存储评价内容

print(ke.ping) #输出评价内容

with open('全部评价.txt','a',encoding='utf-8') as f: #将评价内容存储到‘全部评价.txt’的文件中

f.writelines(ke.ping) #将评价内容列表中的元素写入文件

声明:以上文章均为用户自行发布,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。