利用python製作一個聊天機器人
阿新 • • 發佈:2018-12-26
該程式基於TCP服務,首先上一下成果圖
先是利用手機和服務端聊天(手機端用的是QPython3執行的python程式碼):
當然也可以在電腦上執行:
程式碼如下:
首先是服務端的程式碼:
import socket import time #socket.AF_INET:網路通訊 ,SOCK_STREAM:基於TCP協議 connect = socket.socket(socket.AF_INET,socket.SOCK_STREAM) connect.bind(('127.0.0.1',8000)) connect.listen(5) while True: conn,addr = connect.accept() while True: try: #1024是對方發來訊息的位元組數的限制 msg = conn.recv(1024) a = msg.decode('utf-8') print('對方發來的訊息是:',msg.decode('utf-8')) for i in range(0, len(list(a))): if a[i] == '你' and a[i + 1] == '好': send = '你好,我是智慧機器人,請問有什麼可以幫您的?' break elif a[i] == '幫' and a[i + 1] == '我': send = '滾你丫的,自己去!' break elif a[i] == '帥': send = '我覺得我的主人是世界上最帥的人' break elif a[i] == '主' and a[i+1] == '人': send = '您是我的主人' break elif a[i] == '哈': send = '你有啥開心的事情?說出來聽聽' break elif a[i] == '你' and a[i + 1] == '是' and a[-1] == '誰': send = '我是智慧機器人' break elif a[i] == '哭' : send = '別哭' break elif a[i] == '幫' and a[i + 1] == '我': send = '我才不幫你呢,除非給我錢' break elif a[i] == '錢': send = '錢是萬惡之源,要遠離' break elif a[i] == '笑' and a[i + 1] == '話': send = '從前有棵樹,一直老母豬撞死在樹上了.....哈哈哈' break else: send ='對不起,沒理解您的意思,我還需要學習' time.sleep(1) conn.send(send.encode('utf-8')) except Exception: break conn.close() connect.close()
其次是客戶端的程式碼:
import socket connect = socket.socket(socket.AF_INET,socket.SOCK_STREAM) connect.connect(('127.0.0.1',8000)) while True: msg = input('\033[0;32m' + '請輸入要傳送給服務端的話:' + '\033[0m') #防止輸入為空 if not msg :continue #.encode('utf-8')是將str型別的資料轉換成二進位制 connect.send(msg.encode('utf-8')) data = connect.recv(1024) print(' \033[1;34m' + '收到服務端訊息: ' + '\033[0m',data.decode('utf-8'))
可以看到,這就是最簡單的基於TCP通訊的程式碼,只是在服務端中加了一個判斷功能,然後回覆相應的內容。
如果想利用手機和電腦端進行通訊,需要在同一個WIFI熱點下,同時注意要將IP改為電腦和手機當前同時連線熱點的IP,同時還要注意在同時連線校園網的情況下不可以。