您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎樣用Python寫了一個智能機器人來聊天,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
人工智能已是趨勢,智能酒店,智能網吧,無人駕駛等等都已經實現,過不了多久,就會普及我們的生活圈子;同樣,智能時代的來臨意味著很多人將會面臨失業。我們要跟著時代的發展前進,這樣,我們才不會被時代所拋棄,所淘汰!
而作為人工智能的***語言——python
將會是我們學習的***目標;有人說過一句話:
在近后的社會中,不會python的人將會被列為新“文盲”! 而且python也是最適合沒有任何編程語言基礎的人學習!所以我開始了python的學習之旅!
只要你找對步驟,找對方法,認真學習!相信我,很快你就能學會!
這里,小編給大家準備的一份很適合零基礎入門學習資料提供給想學習的人,當然還有今天的源碼
好了,今天小編給大家帶來的是寫一個智能的機器人:
一. 剖析一下生成器對象
先看一個簡單的例子,我們創建一個生成器函數,然后生成一個生成器對象
人工智能時代,我用python寫了一個智能機器人來聊天,非常不錯!
表示G是一個生成器對象,我們來剖析一下,里面到底有什么
print dir(G)
大家注意看有4個很特殊的函數close(),next(),send(),throw(),next()函數前面兩篇文章講過了,我就不再說.今天我們就重點來說說send(),throw(),close()函數
二. 什么是協程
Python的協程有點類似線程,可以認為協程是一種用戶級的輕量級線程或者微線程,可以運行多個函數,讓這幾個函數看起來好像是在同一時間運行,但是比線程有一些優點,比如不用大量占內存,開銷小,也不用考慮線程安全.(關于什么是線程后面文章會講)
1.send()函數
send()用于傳遞參數,實現與生成器的交互,當程序運行到receive=yield的時候 就會被掛起,等待生成器調用send方法,這個時候外部調用send函數,發送數據變量進來,數據變量就會傳遞到received
示例代碼:
a).echo函數里面一個死循環,里面有一行關鍵的代碼,receive=yield 這個就是send函數從外部發送過來的入口.
b).外部函數一開始要生成一個生成器對象也就是Echo=echo()
c).然后很關鍵的一步就是next(Echo),一定要調用一次next函數,讓生成器推進到***條yield表達式那邊
d).接下來我們就可以把yield操作和send操作結合起來,可以獲取外界所輸入的數據,然后用一套流程去進行處理
2.throw()函數
throw主要是向生成器發送一個異常,可以結束系統定義的異常(當然包括自定義的異常)
示例代碼:
a).創建生成器對象G
b),執行next(G)并打印結果,我們會得到***個yield里緩存的結果'First',并且停留在yield 'Second'之前
c).拋出一個異常類ValueError(注意ValueError是類不是字符串),當生成器收到異常直接跳過 yield 'Second'進入except部分,打印出'Catch the TypeError'
d).執行next(G)并打印結果,我們會回到while頭部,并且消耗掉***個yield 'Frist',執行yield 'Second'
3.close()函數
close用于停止生成器,如果停止之后再調用next,就會引發StopIteration錯誤
示例代碼:
當生成器對象Echo調用完close()之后,再調用send('123')就會拋出一個異常StopIteration,然后被我們捕捉到了
三. 實戰應用-迷你聊天機器人
講了這么多,大家是不是有點暈,
生成器本身就是Python里面最復雜的概念之一,有同學問難道還有之二(是的,就是裝飾器)
,我們用協程寫一個小的聊天機器人吧~~
1).創建一個聊天機器人生成器函數,可以認為是后臺的一個線程函數
2).前臺不斷的獲取用戶的輸入,然后利用協程發送給后臺處理
看一下運行的效果
關于怎樣用Python寫了一個智能機器人來聊天就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。