问答机器人从0到1 06
import re,sys,random
from time import strftime,gmtime
import difflib
f=open('main.txt','r',encoding='utf-8')
main=f.read()
dim_nub=0
writer_nub=0
def welcome():
print('先生,输入$可以关闭我嚛,模糊搜索已开启,输入&关闭')
time_return()
birthday_return()
wait_enter()
def wait_enter():
global writer_nub
if writer_nub==5:
print('进入编辑模式成功!!')
write_info()
question=input('...')
if question=='':
pop(question,'用户直接回车')
writer_nub+=1
return_word('不可以直接回车哟')
open_function(question)
def open_function(function):
global dim_nub
if function=='$':
print('后会有期!')
quit()
elif function=='&':
if dim_nub==1:
return_word('模糊搜索已关闭,无需再次关闭')
else:
dim_nub=1
return_word('模糊搜索已关闭,输入*开启')
elif function=='*':
if dim_nub==0:
return_word('模糊搜索已开启,无需再次开启')
else:
dim_nub=0
return_word('模糊搜索已开启,输入&可再次关闭')
else:
if dim_nub==0:
trends(function)
dim(function)
elif dim_nub==1:
trends(function)
find_return(function)
def trends(word):
key_word_time=['时间','现在几点了','现在几点','time','what time','现在几点了?','几点了?','几点了','几点?','几点']
if word in key_word_time:
return_word(strftime("%Y年%m月%d日 %H:%M"))
else:
pass
def birthday_return():
f=open('身份证.txt','r',encoding='utf-8')
main=f.read()
name=re.findall('\n(.*?)@',main,re.S)
answers=re.findall('@(.*?)\n',main,re.S)
days=[]
happy_peopel_now=''
happy_centence=['祝你坚强,祝你可爱,祝你一生被爱,生日快乐。','喜怒哀乐因为你,欢欣雀跃也为你,你就是我心情的遙控器。让我陪着你一起坚强,挽手一起度过风雨,生日快乐。','愿你无疾无忧,岁岁平安,愿你常有玩伴,常常快乐,愿你一生努力,一生被爱,愿你遇好人,读好书,看好景。生日快乐。','祝你从早上起床快乐到晚上进被窝,祝你生日快乐,祝你天天快乐。','没有原因你是宝物,世间万物我最偏爱你,祝你安宁,祝你自由,你仍旧是我心中无法承载的画卷,生日快乐。','直向西走,越过晨昏线,越过日界线,回到初识你的那一天,你说过要让我好好长大,你说过可以让我一直做个孩子,所以祝你生日快乐','新的一年,祝你去危就安,得偿所望,大小姐生日快乐。','祝你不止生日,还有除此之外的每一天都快乐。以及,但愿这漫长渺小的人生不负你每个光辉时分。']
for answer in answers:
mouth=answer[10:14]
days.append(mouth)
data=strftime("%m%d")
dic = dict(map(lambda x,y:[x,y],name,days))
for i, day in enumerate(days):
if day ==data:
happy_name_list=name[i:i+1]
if len(happy_name_list)==0:
happy_peopel_now=happy_name_list[0]+'\n'
else:
for happy_name in happy_name_list:
happy_peopel_now=happy_peopel_now+'\n'+happy_name
if happy_peopel_now=='':
pass
else:
return_word('提示你一下:今天生日的有{0}\n'.format(happy_peopel_now)+'我赌你没有准备礼物,我也没有,不过送你一句话:\n{}'.format(random.choice(happy_centence)))
def dim(word):
keywords=re.findall('\n(.*?)@',main,re.S)
answers=re.findall('@(.*?)\n',main,re.S)
value=keywords+answers
return_words=difflib.get_close_matches(word,value,10, cutoff=0.6)
nub=int(len(return_words))
if nub==1:
for return_word_dim in return_words:
find_return(return_word_dim)
elif nub==0:
pop(word,'模糊匹配失败')
return_word('worry,数据库模糊匹配失败....')
else:
dim_more(return_words)
def dim_more(key):
try:
a=key[0]
b=key[1]
c=key[2]
key_nub=input('你可能想问:\n1.{}\n2.{}\n3.{}\n'.format(a,b,c)+'..:输入序列号查看结果')
try:
key_nub=int(key_nub)
if key_nub==1:
find_return(a)
elif key_nub==2:
find_return(b)
elif key_nub==3:
find_return(c)
else:
return_word('worry,请输入正确数值,正在跳转....')
except:
pop(key,'模糊搜索输入其他字符')
return_word('worry,输入非法字符,正在跳转....')
except:
d=key[0]
find_return(d)
def time_return():
data=strftime("%Y年%m月%d日 %H:%M")
f=open('日志.txt','a')
f.write('时间:{}\n'.format(data))
f.close
print('当前日期为{}'.format(data))
hour=int(strftime("%H"))
if 4<hour<12:
print('上午好,先生')
elif 11<hour<17:
print('中午好,先生')
elif 16<hour<24:
print('晚上好')
else:
print('这么晚还不睡,和我的粑粑一起变秃头小宝贝叭~~~')
def find_return(question):
try:
try:
answer=re.findall('{}@(.*?)\n'.format(question),main,re.S)[0]
pop(question,answer)
return_word(answer)
except:
answer=re.findall('\n(.*?)@{}\n'.format(question),main)[0]
pop(question,answer)
return_word(answer)
except:
turn='没有找寻到答案,请换个说法试试:-)正在跳转....'
pop(question,'数据库无答案')
return_word(turn)
def return_word(word):
print('>>>{}'.format(word))
wait_enter()
def pop(q,w):
f=open('日志.txt','a')
f.write('问:{}---答:{}\n'.format(q,w))
f.close()
def write_info():
global writer_nub
q=input('q:')
a=input('a:')
if q=='':
writer_nub=0
wait_enter()
else:
f=open('核准数据库.txt','a')
f.write('{}@{}\n'.format(q,a))
f.close()
write_info()
welcome()
本次新增1.拥有日志2.连续输入5次回车即可进入编辑模式,编辑模式中所有对话将存入核准数据库中
下一章将会增加管理员模式,图就不附上了。。。掰掰ヾ(•ω•`)o