工欲善其事,必先利其器,我們要學 AI 總不可能連哈囉沃德都不會吧,
這邊我會花兩天告訴大家怎麼安裝,以及基本的語法,請跟我大喊,阿柴,太水了啦。
> MacOS
terminal下指令:
brew install python3
> Windows
下載網址:
https://www.python.org/downloads/ windows/
> Linux
terminal下指令:
sudo apt-get update
sudo apt-get install python3.6
輸出Hello world
如此,即完成python安裝與測試。
virtualenv 是一個程式,用來產生獨立的 python 套件執行環境。
通常使用的目的是為了一個專案特地製作一個虛擬環境,
如此一來就不會因為版本的問題而彼此影響。
譬如說 A 專案需要用到 python3.7 而 B 專案需要的則是 python3.5,
便可使用 virtualenv 建立兩個版本不同之虛擬環境供使用者使用,
virtualenv 的原理就是利用 Unix 的 source 指令來從檔案中讀取指令來執行,
進而暫時改變目前這個執行階段的 python 的環境。
這也是每次登入都要重新 activate 的原因了。
virtualenv 會建立一個資料夾,並複製所需要程式進資料夾,
如 python 、 pip,接下來不管是執行 python 、 pip 或接下來安裝的套件,
全都是在這個資料夾獨立且隔離的。
所以就不會再發生跟系統版本不合,或是權限不足不能自己安裝套件的問題了!
首先於 terminal 中下載 virtualenv 套件,
pip install virtualenv
再來建置虛擬環境,
virtualenv -p /usr/bin/python3.6 envName
上述建置虛擬環境的語法可以理解成,
virtualenv -p /usr/bin/指定的python版本 想要的env名稱
如果想進入自己建立的 python virtualenv,
source envname/bin/activate
會發現於 terminal 輸入行前方多了 (dwanyu_env) ,如此即是進入成功,
括號內文字為自己所建立之 virtualenv 名稱。
在 python 中 print 字串要加上 ' ' 或者 " " ,
如下:
>>> print("hello world")
hello world
>>> print('abcexd')
abcexd
而在 print 中,也可做些簡單運算,
>>> print(1+1)
2
>>> print(3-2)
1
>>> print(3*4)
12
>>> print(12/3)
4.0
>>> print('test'+1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not int
當上述 print 輸入 'test'+ 1 ,便會出現 Traceback 之報錯,
原因是字串('test')不能直接與數值做運算,
當我們運用上 int 將字串轉為數值後,即可正常運算,
>>> print(int('2')+3)
5
而當你 int 括號內的本身即為數值時,便只會保留整數的部分,忽略小數的部分。
>>> print(int(1.9))
1
float 則是將括號內的本身轉成浮點數,浮點數會保留小數數值。
>>> print(float('1.2')+3)
4.2
前述已介紹過加減乘除之基本介紹,
print 還可提供其餘數學功能使用,
取餘數: %
>>> print(8%3)
2
取次方: **
>>> print(8**2)
64
Python 中宣告變數賦值不需要類型聲明。
每個變數在記憶體中創建,都包括變數的標識,名稱和數據這些信息。
每個變數在使用前都必須賦值,變數賦值以後該變數才會被創建。
等號 = 用來給變數賦值。
等號 = 運算符左邊是一個變數名,等號右邊是存儲在變數中的值。
>>> abc = 123
>>> print(abc)
123
如我們在 terminal 中,宣告 abc 等於 123 時,
再 print abc 即會輸出 123,
原因是我們已於定義中宣告 abc 代表 123 。
python 有內建四種型別,
分別為:
而對他們簡單做個介紹:
布林值 bool 這個型別就代表著 真 True 或 假 False 是控制流程的好幫手,
整數 int 這個型別就是不帶小數點的數,例如 123 就是個整數,
浮點數 float 相較於整數,浮點數就是有帶小數點的數,例如 123.124 是浮點數,
字串 string 字串就是我們一般在使用的文字,使用方式就是用單或雙引號把內容包起來,
所以'123.123'則是字串不是浮點數。
而內建型別是可以進行型別轉換的,
例如:
>>> text1 = '123'
>>> text2 = int(text1)
>>> print(text2)
123
我們首先定義 text1 為 '123' 型別為字串,
再來我們將 text2 定義成 把 text1 轉換成 int 型別,
接下來輸出便會是一個整數 123 。
其他的一通百通,
型別轉換簡單來說就是將想轉換的元素括號起來轉換成想轉換的型別,
變數名稱 = 想轉換的型別(元素) ,大概這樣。
集合型別有下列五種:
字串是 Python 中最常用的數據類型。
可以使用單引號 '' 或雙引號 "" 來創建字串,
創建字串很簡單,只要為變量分配一個值即可。
例如:
>>> string1 = "abc"
>>> print(string1)
abc
>>> string2 = '123'
>>> print(string2)
123
而在python中,我們可以透過[]來截取自己想要的部分,
假設我們想要新增一個字串 test1 並將它定義為 測試用 ,
但在實際輸出時,只想輸出『用』,那我們能這樣做,
>>> test1 = "測試用"
>>> print(test1[2])
用
可看見我們 print(test1[]) 中的方框,數值為2,
按造常理的運算,對應 2 的文字應為『試』,但在程式語言中,
數數值通常由 0 開始,由此為運算,恰可知曉,
>>> test1 = "測試用"
0 1 2
計算方式應為如此。
而字串除了截取,亦可進行連接,
>>> print(test1 + string1)
測試用abc
只要在括號內將兩個字串變數名做 + 即可連接字串。
更多用法:
序列是Python中最基本的數據結構。
序列中的每個元素都分配一個數字即它的位置或索引,
第一個索引是0,第二個索引是1,依此類推。
Python有6個序列的內建類型,但最常見的是列表 (List) 和元組 (Tuple)。
序列都可以進行的操作包括索引,切片,加,乘,檢查成員。
此外,Python已經內建查詢序列的長度以及確定最大和最小的元素的方法。
創建一個列表,只要用逗號分隔不同的數據並使用方框括起來即可。
如下所示:
>>> list1 = [ 1 , 2 , 3 , 4 , 5 ]
>>> print(list1)
[1, 2, 3, 4, 5]
>>> list2 = ['dog','cat','bird']
>>> print(list2)
['dog', 'cat', 'bird']
List中可擁有數值、字串,
而當使用者想取得List中的值,則可這樣使用,
>>> print(list2[0])
dog
>>> print(list2[2])
bird
由此可看出,List中取值與截取的方式概念共通,
取值的基準點都是由 0 開始數,
而List比較特別的一點是它可以進行更新刪除,
假設我們今天有一個 List3 = ['test']
更新:
>>> list3.append('newword')
>>> print(list3)
['test', 'newword']
我們可以透過 .append 這個方式來為列表新增一個值,
而刪除的概念很雷同,
刪除:
>>> del list3[1]
>>> print(list3)
['test']
當我們使用 def 並指定 list 某一位置時,便可刪除該指定位置之值,
上述例子中列表原有 test 即 newword , 我們指定位址為 1 之值進行刪除,
便只剩下 test 。
List 的操作還有許多種,
譬如:
len() 是用於算出該列表的長度,
>>> len(list1)
5
List可透過 + 號來將不同數值的 List 來進行組合,
>>> list4 = list1 + list2
>>> print(list4)
[1, 2, 3, 4, 5, 'dog', 'cat', 'bird']
或者查詢特定數值或字串是否存在於列表當中,
>>> print('dog' in list4)
True
除此之外,列表還有許多實用的用法,例如:
test_list = ["dog","cat"]
index()方法,
可以將要尋找的串列元素傳入,它會回傳該元素的位置索引值,
print(test_list.index("cat"))
count()方法,
則是可以計算該元素於列表中的個數,
print(test_list.count("cat"))
更多用法:
在Python中,元組與列表很類似,概念不同之處在於元組的元素不能修改。
元組使用小括號,列表使用方括號。
元組創建很簡單,Tuple只需要在小括號內新增元素即可創建元組,
>>> tuple1 = ('1','2','3')
>>> tuple2 = ('dog','cat')
>>> print(tuple1)
('1', '2', '3')
>>> print(tuple2)
('dog', 'cat')
如此便完成了創建一個元組,
在介紹中我們提到元組是不能進行修改的,但它可以被組合成新的一個元組,
例如:
>>> tuple3 = tuple1 + tuple2
>>> print(tuple3)
('1', '2', '3', 'dog', 'cat')
如同列表與字串一樣,但在 python 中,運用 + 號,便可將大多類型進行組合了,
附註一點,
元組(Tuple)雖然不能被修改,但是,是可以被整個刪除的,可是不能只刪除一個數值,
例如:
>>> del tuple3
>>> print(tuple3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'tuple3' is not defined
如此便會產生 NameError 告訴說 tuple3 沒有被宣告。
而元組的 len() 與相關用法與列表相同,就不多做介紹。
更多用法:
字典是另一種可變容器模型,且可存儲任意類型對象。
字典中的每個鍵值 key to value 都用冒號 : 來做分隔,
每個鍵值之間用逗號 , 分隔, 整個字典包括在 括號 {} 中,
格式如下所示:
>>> dict1 = { 'a' : 1 , 'b' : 2 , 'c' : '3' }
>>> print(dict1)
{'a': 1, 'b': 2, 'c': '3'}
上述的例句中,key 為 a , b , c , value 為 1 , 2 , 3 ,
大多情況下 key 通常為 : 冒號前方之值,且 key 是唯一的,
如果 key 有重複的狀況,後者的數值會取代前者的數值,
例如:
>>> dict2 = {'a':1 , 'a':2}
>>> print(dict2)
{'a': 2}
整個 Dictionary 可理解為 a 為 1 , b 為 2 如此,
所以當然的 a 不可能同時為 1 又為 2 ,
在字典中值可以為任何數據類型,但 key 必須是不可變的,如字符串,數字或元組。
而字典中要取特定的數值相較於其他的數據類型是較為簡單的,
例如我們定義一個 dict4 = { 'name':'apple' , 'age':'18'}
當我們想知道 name 為何時,便可將對應之 key 輸入,
>>> print(dict4['name'])
apple
便會得到對應數值為何,如果當要尋找的數值不存在於字典當中,
就會回報 keyError ,
字典同樣是允許被新增刪除修改的,
其餘的用法如 len()等與元組列表也大概相同,便不多做介紹。
更多用法:
努力一天之後,這邊送給大家一首歌 告五人 - 愛人錯過
https://www.youtube.com/watch?v=6D79CYTxvOM&list=PLZ_d6NX2sE80hOIrDy5J6vaCS53vj0oo7&index=40&ab_channel=%E5%91%8A%E4%BA%94%E4%BA%BAAccusefive