簡易 Python 問答機器人(Simple Python QA Robot)
Originally published at https://yunlinsong.blogspot.com.
本篇文章會以一個 簡易問答機器人 來了解底下的 Python 相關知識:變數、字串、函數、字典、if/if else/if elif else 判斷式、for 迴圈。
聊天機器人程式架構
儲存問題與答案的 quiz 串列。
兩個主要函數:sendMsg 函數、readMsg 函數。
變數(Variables)
底下用非很精準的解釋,畢竟變數和容器還是不一樣的觀念
變數可看成容器,而容器有很多種,例如罐子、紙箱、寶特瓶、水桶、背包、鉛筆盒等。
但若是有30個人都帶著一模一樣的罐子容器時,那要怎麼辨別這個罐子是誰的啊?!
所以就給這些罐子一個獨一無二的名稱!開始來命名囉!
可以亂命名嗎?!好像不給個規則會產生一些怪怪的名稱。在程式語言裡,變數是有命名規則的,大多的程式語言通常會有底下兩個規則:
而 Python 提供的容器( Data Types)有底下幾種:
- 文字容器(Text Type):字串(string)。
- 數字容器(Numeric Types):整數(int)、浮點數(float)、複數(complex)。
- 序列容器(Sequence Types):串列(list)、元組(tuple)、range(小編不知道要如何翻成中文)。
- 映射容器(Mapping Type):字典(dict)。
- 集合容器(Set Types):可變集合(set)、不可變集合(frozenset)。
- 布林容器(Boolean Type):布林(bool)。
- 二元容器(Binary Types):位元組(bytes)、位元組陣列(bytearray)、memoryview(小編不知道要如何翻成中文)。。
Python 變數的使用方式如下:
函式(Functions) 此部分可參考 Python 函數(Functions) 一文
在解釋函式是什麼之前,先來看看Scratch程式設計裡的一些積木:
在Scratch裡,每一個積木都是一個函式,而且都已被分類了,例如上圖中的、、等積木。讀者也可以在 code.org 玩玩Artist https://studio.code.org/s/course3/stage/5/puzzle/1 與 Bee https://studio.code.org/s/course3/stage/6/puzzle/1 ,幫助了解什麼是函式。Python 函式的樣子如下:
Python 的字串是以單引號 (single quotation marks) 或是雙引號 (double quotation marks),所包圍的文字。
而多行字串可用三個雙引號來表示,底下皆為 Python 的字串範例:
Python 字典範例:
# 建立英漢字典對照表
d = {
'python': '蟒蛇',
'ruby': '紅寶石',
'dictionary': '字典',
'English': '英文',
'Chinese': '中文',
'apple': '蘋果',
'dog': '狗',
'cat': '貓',
'sun': '太陽'
}
Python判斷式範例:
# 考試成績結果判斷
holanScore = 59
if holanScore < 60:
print("版主考試不及格啦!")
holanScore = 60
if holanScore >= 60:
print("版主考試及格了!")
else:
print("版主考試不及格啦!")
holanScore = 61
if holanScore >= 90:
print("版主不就好棒棒!!!")
elif holanScore >= 70:
print("版主考試及格啦!")
else:
print("版主考試有通過嗎?")
先來認識什麼是串列。下圖為 Lists 的示意圖:
串列的每一格當成是哆啦A夢的百寶袋,因為 Python 串列的每一格就像百寶袋一樣,雖然一格只能放一樣東西,但 此東西是可以是已經裝好東西的。
計分功能(Scoring)
在這個程式裡,使用了 cnt 變數 來記錄玩家答對了幾題。
範例程式:
思考與程式 練習 :如何增加這個問答機器人在判斷玩家的回答的改善機制(人工智慧)?例如在回答「借什麼可以不還?」時,「借過」與「借光」是同義詞,這兩個詞都要算對。
Originally published at https://yunlinsong.blogspot.com.