一、前言
剛剛學了一些python文件讀寫的內容,先跑過來整活了。順便復習一下之前學的東西。
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
|
import time doc_local = 'D:\learning_folder\interaction.txt' def iRead(): fr = open (doc_local, 'r' ) message = fr.read() return message def iWrite(message): fw = open (doc_local, 'w' ) fw.write(message) fw.close() def dTime(num): a = time.time() b = time.time() while (b - a)<num: b = time.time() return None answer = { 'i am temmie' : 'you are temmie? who am i?' , 'temmie' : 'temmie!!!' , 'wang!' : 'wangwangwang!!!' } iWrite( 'test begin' ) message0 = iRead() print (message0) while True : dTime( 1.0000000 ) mes = iRead() if mes! = message0: v = answer.get(mes) if v = = None : if mes = = 'q' : print ( '退出運行' ) break else : print ( 'message:' , mes, end = '\t' ) a_out = ( 'temmie say again:{0}' . format (mes)) message0 = a_out iWrite(a_out) print (a_out) else : print ( 'message:' , mes, end = '\t' ) b_out = ( '{0}' . format (answer.get(mes))) message0 = b_out iWrite(b_out) print ( 'answer:' ,b_out) |
效果呢,就是你在這個位置的記事本里寫東西然后保存,它會回復你消息,如果你說的話在規定的字典中,它就會回你預設好的話。如果沒有預設,就會重復你的話(復讀機)。
我把每次輸入與返回都進行了輸出
二、效果演示
你甚至可以跟它接crepper,如果你足夠閑,也可以整個成語接龍。
三、完整代碼
三個函數分別定義讀取內容、寫入內容、與定時
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
def iRead(): fr = open (doc_local, 'r' ) message = fr.read() return message def iWrite(message): fw = open (doc_local, 'w' ) fw.write(message) fw.close() def dTime(num): a = time.time() b = time.time() while (b - a)<num: b = time.time() return None |
answer是預設回答的字典。
先寫入內容,清空之前的文字,提示程序開始。讀取文件內容,就是'test begin'
1
2
|
iWrite( 'test begin' ) message0 = iRead() |
然后是一個死循環,直到你輸入了q,才會退出。
每隔1秒讀取一次文件中的內容,如果文件內容沒變視為沒輸入,文件內容變化則對字典進行檢索,返回None證明無對應答案,則復讀。如果返回了值則輸出該值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
while True : dTime( 1.0000000 ) mes = iRead() if mes! = message0: v = answer.get(mes) if v = = None : if mes = = 'q' : print ( '退出運行' ) break else : print ( 'message:' , mes, end = '\t' ) a_out = ( 'temmie say again:{0}' . format (mes)) message0 = a_out iWrite(a_out) print (a_out) else : print ( 'message:' , mes, end = '\t' ) b_out = ( '{0}' . format (answer.get(mes))) message0 = b_out iWrite(b_out) print ( 'answer:' ,b_out) |
到此這篇關于Python實戰整活之聊天機器人的文章就介紹到這了,更多相關python聊天機器人內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/Temmie1024/article/details/115980732