自己随便写了一个人机交互的程序。不存在任何智能,只是可以识别姓名,可以记录对话内容,并保存等到下一次交互时加载。 (推荐面向对象版本)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# 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的面向对象编程版本(推荐)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# 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() |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/nbu2004/article/details/49054299