900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > python人机交互_人机交互程序 python实现人机对话

python人机交互_人机交互程序 python实现人机对话

时间:2020-11-07 19:12:46

相关推荐

python人机交互_人机交互程序 python实现人机对话

自己随便写了一个人机交互的程序。不存在任何智能,只是可以识别姓名,可以记录对话内容,并保存等到下一次交互时加载。 (推荐面向对象版本)

# hello.py

# 这是老早写的。不过今天加入了Pickle,然后润色了一下。

# 可能有点无聊(不推荐使用)

import pickle

import os.path

def search(x, data):

for k, d in enumerate(data):

if x == d['name']:

return k, d

def save_data(A,pklname):

with open(pklname, 'wb') as pkl:

pickle.dump(A, pkl)

def load_data(pklname):

with open(pklname, 'rb') as pkl:

return pickle.load(pkl)

# communicating with computer

data=[] if not os.path.isfile('data') else load_data('data')

while True:

print('Welcome! [type "quit" if you want to quit.]')

name=input('--What is your name?n--')

if name in {'quit','Quit','q','Q'}:

print('[You quit]')

break

if not search(name, data):

print('--Welcome, '+name+ '. I will remember you name.')

d={'name':name,'age':0,'history':[]}

data.append(d)

else:

print('--Hi, '+name+'. How I miss you.')

k, d=search(name, data)

while d['age']==0:

age=input('--How old are you?[I will repeat until you respond!]')

try:

if int(age)==0: continue

d['age']=int(age); data[k]=d

except:

pass

while True:

y=input('--Chan I help you? [yes/no]')

while not y:

y=input('--Yes or no?')

d['history'].append(y); data[k]=d

if y in {'no','No','n','N'}:

print('--%s.'%y)

print('--Bye bye.')

break

elif y in {'yes','Yes','y','Y'}:

print('--%s.'%y)

print('I am pleased to serve you.')

else:

print('I am sorry. I can not understand what you said.')

break

# save data

y=input('--Do you want to save the data? [yes/no]')

while not y:

y=input('--Yes or no?')

if y in {'no','No','n','N'}:

print('--%s. [You say no.]'%y)

elif y in {'yes','Yes','y','Y'}:

print('--%s. [the data is saved in file named "data".]'%y)

save_data(data, 'data')

else:

print('I am sorry. I can not understand what you said. data are not saved.')

下面是hello.py的面向对象编程版本(推荐)

# hello.py

import pickle

import os.path

def search(x, data):

for k, d in enumerate(data):

if x == d['name']:

return k, d

class Hello:

def __init__(self, name='', data=None):

self.name = name

self.data = data

def __getstate__(self):

return self.data

def __setstate__(self, data):

self.data = data

def mainloop(self):

while True:

print('Welcome! [type "quit" if you want to quit.]')

name=input('--What is your name?n--')

if name in {'quit','Quit','q','Q'}:

print('[You quit]')

break

if not search(name, self.data):

print('--Welcome, '+name+ '. I will remember you name.')

d={'name':name,'age':0,'history':[]}

self.data.append(d)

else:

print('--Hi, '+name+'. How I miss you.')

k, d=search(name, self.data)

while d['age']==0:

age=input('--How old are you?[I will repeat until you respond!]')

try:

if int(age)==0: continue

d['age']=int(age); self.data[k]=d

except:

pass

while True:

y=input('--Chan I help you? [yes/no]')

while not y:

y=input('--Yes or no?')

d['history'].append(y); self.data[k]=d

if y in {'no','No','n','N'}:

print('--%s.'%y)

print('--Bye bye.')

break

elif y in {'yes','Yes','y','Y'}:

print('--%s.'%y)

print('I am pleased to serve you.')

else:

print('I am sorry. I can not understand what you said.')

break

# save data

y=input('--Do you want to save the data? [yes/no]')

while not y:

y=input('--Yes or no?')

if y in {'no','No','n','N'}:

print('--%s. [You say no.]'%y)

elif y in {'yes','Yes','y','Y'}:

print('--%s. [the data is saved in file named "data.pkl".]'%y)

with open('data.pkl', 'wb') as fo:

pickle.dump(self, fo)

else:

print('I am sorry. I can not understand what you said. data are not saved.')

# communicating with computer

try:

with open('data.pkl', 'rb') as fo:

hello=pickle.load(fo)

except:

hello=Hello('ai',[])

hello.mainloop()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持积木网。

Python 将RGB图像转换为Pytho灰度图像的实例

问题:我正尝试使用matplotlib读取RGB图像并将其转换为灰度。在matlab中,我使用这个:img=rgb2gray(imread('image.png'));在matplotlibtutorial中他们没有覆盖它。他们

python中os和sys模块的区别与常用方法总结

前言本文主要介绍了关于python中os和sys模块区别与常用方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。官方解

Python利用multiprocessing实现最简单的分布式作业调度系统实例

介绍Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。一个服务进程可以作为调度者,将任务分布到其他多

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。