AndyChiangFri, Jan 29, 2021 4:19 PM
Python
使用 Visual Studio Code 設定您的 Python 初學者開發環境
在Window的命令提示字元(CMD)輸入以下指令:
如果回應是這個,代表已經安裝成功,沒有的話就去安裝吧。
在CMD輸入:
會得到:
然後就可以在 >>>
之後接上程式碼,電腦將一行行執行。
在 >>>
之後輸入:
Python內建沒有提供多行註解,但因為編譯器會自動忽略未定義變數的字串,所以這樣也行。
Python不像C或Java,不需要宣告型態,而是在初次賦予值時決定,通常有這幾種型態:
[ ]
包覆( )
包覆range(數字)
{ }
包覆{ "A" : a, "B" : b }
基本上和C是一樣的,且有分大小寫。
當賦予值是清單時,Python允許使用拆包。
如果在函式內宣告變數的話,該變數為局部變數。但如果想要在函式內宣告全域變數的話,請在變數前加上 global
。
基礎函式庫沒有,所以要另外引入。
和C一樣,字串就是一個字元的陣列,以下為字串的函式:
使用 len(字串)
可以取得字串長度。
使用 字串A in 字串B
,如果有就回傳True,反之回傳False。
切割str從第二位到第四位的部分。
刪除字串前後多餘的空格。
將字串內一個單字替換成另一個單字。 replace()
並不會改變原字串。
以某個單字做分割,回傳值為一個字串的list。
使用 .format(內容)
將內容置入字串中 {}
的位置,預設會依照順序排,如果要指定的話,則可以寫:{數字}
。
{:數字}
,預留N個空格,類似C語言中的 %Nd
{:.2f}
,小數點下N位如果在字串前加上英文字母 f
或 F
,字串會轉成格式化字串,直接在字串內的 {} 中加入變數即可。
字串前加上 r
表示正規表達式,像 r"[0-9]"
。
常見的跳脫字元有:
\
:區分關鍵字和字串\n
:換行基本上和C差不多,我只講幾個較特別的。
**
:指數(次方)and
:且,等於&&
or
:或,等於||
not
:非,等於!
is
:跟==
的差別在於,不只內容一樣,更要是相同的物件is not
:is
的相反in
:檢查A有沒有在B之中not in
:in
的相反Python提供了四種容器,分別為:
別忘了列表陣列第一個的索引值是 0 喔!
從第二個切到第三個(不包括第四個)。
從第三個切到列表底。
從列表頭切到第四個(不包括第五個)。
從第一個切到第四個(不包括第五個),每兩個取一個。
另外,負索引則代表從列表底倒數第幾個。
從列表頭切到倒數第三個("c"),但不包刮 "c",所以切到 "b"。
此小技巧將列表反轉。
使用 .append()
將項目加在陣列末端。
使用 .insert()
會在其index的前面插入新的值,並把原先的值往後移動一格。
使用 extend()
,將其他任意陣列類型接在當前列表末端。
未指定數字則刪除最後一位。
刪除指定索引:
刪除整個陣列:
陣列還存在,只是內容清空。
比如說我今天想要篩選出 fruit
列表中包含 a
的項目,我可能會這樣寫:
其實可以簡化成一行:
英文的話會照英文字母排,數字則是從小排到大。
myfuc可以是任何自訂的函式。
基本上跟列表的函式一樣,差別在於組合不可更改成員,因此想要新增或刪除成員時,解決方法是將組合轉為列表 list()
,更改內容,然後再轉回組合。
union也行,只是會返回新集合。
一樣是刪除,但 remove()
如果刪除項目不存在將會引發錯誤, discard()
則不會。
pop() 則是刪除並傳回最後一位的值,但記得集合是無序的嗎? 因此沒辦法知道會刪掉什麼。
基本形式為 key : value
兩種都是獲取key相對的value。
回傳值為字典中所有key的列表(list)。
回傳值為字典中所有value的列表(list)。
回傳值為字典中所有項目的列表(list),項目以組合(tuple)型態回傳,如(key, value)
。
如果不存在此key,則為新增項目。
刪除指定key的項目。
dict2 = ditc1
是無效的,必須使用 copy()
。
簡單講,就是字典內再包一個字典。
Python並沒有提供原生的陣列,但我們可以用list來實作。
產生一個5列的一維陣列,初始為0。
產生一個3列5行的二維陣列,初始為0。
產生一個235的三維陣列,初始為0,其他依此類推。
使用 any()
函數,參數可以是任意陣列(例如:list、tuple…等等),只要陣列中有任意元素為 True ,則回傳 True ,反之則 False。
如果是空字串會回傳 False。
使用 all()
函數,參數可以是任意陣列(例如:list、tuple…等等),必須陣列中所有元素為 True,才回傳 True,反之則 False。
如果是空陣列會回傳 True。
使用 zip()
函數,參數為多個任意陣列(例如:list、tuple…等等),類別不同也可以,而此函數可以將這多個陣列相對索引的資料重新打包成組合(tuple),並傳回新的陣列物件。
回傳的是一個物件,所以還要強制轉換成我們想要的型態。
如果把他想成二維陣列,眼尖的人就會發現,其實zip()就是做轉置矩陣!
如果陣列長度不一樣,則取最短長度。
*
就好了。參考網址:【python入門教室】(13) 內建函數any(), all(), zip()介紹
Python中的if是靠著縮排來定義區塊的,因此縮排很重要!!!
然後Python不管是if或for或function,都記得加:
!
if condition:
:ifelif condition:
:else ifelse:
:else照理來說,如果if後面不做事情的話會報錯。加 pass
就沒這個問題了,並不會發生任何事情。
Python就跟其他程式語言一樣,提供兩種迴圈:
只要條件為真,迴圈就會一直執行下去。
和一般的For迴圈不太一樣,Python的For迴圈比較像是在走訪任意一種陣列(list、tuple…)的每個項目。
While 以及 For 迴圈皆可使用
break
continue
else:
:當迴圈結束時執行使用 def
來宣告函數。
直接寫名稱就好了,記得加括號。
當參數數量不確定時,在參數前加上 *
,參數將以組合(tuple)形式傳入函數。
可以指定 key = value,此時的順序不重要。
當參數數量不確定時,在參數前加上 **
,參數將以字典(dict)形式傳入函數。
Lambda是一個簡單的匿名函數,格式為:
為何要使用Lambda函數?
因為可以讓一個函數重複使用,例如:
當短時間需要多個相似功能的函數時,可選擇使用Lambda函數。
Python 和 Java 一樣是物件導向程式語言(object oriented),支援所謂的類別以及物件,而物件為類別的實作。
使用 class
關鍵字:
接續上一個,我們現在有了一個名為 MyClass 的類別,實作出名為 p1 的物件:
使用 __init__()
函數,並於宣告時在括號中加入對應的值。
直接在類別中宣告一個函數就好了。
等於 Java 的 this
,不過 Python 中可以任意命名,只要放在第一個參數即可。
使用 del
,刪除 p1 的 name 屬性。
使用 pass
,物件為空且不會出錯。
類似 Java 繼承的概念,有父類別和子類別之分,子類別會繼承父類別所有的變數以及函數。
父類別可以是任意的類別,在建立子類別時將父類作為參數引入。
建立子類別的 __init__
函數時,會覆蓋過父類別的 __init__
函數,這就是所謂的override。
如果想保留父類別的 __init__
函數,請另外呼叫父類別的 __init__
函數,也可以在底下添加子類別才有的屬性。
也可以使用 super()
函數,將取代父類別的名稱。
Python之所以會好用,import是精隨阿!!
就是一般的Python檔案,副檔名為 .py
。
引用名為 mymod.py
的檔案,繼承所有的變數及函數。
覺得模組名稱太長懶得打,可以重新命名。
有時模組包太大,只想要部分功能時可使用。
Python 沒有原生的時間,必須引用名為 datetime
的模組。
小時、分鐘、秒、毫秒、時區非必填,預設值為0(時區為None)
以四個空白為一格tab。
依照key字首字母,由A排到Z。
元字符為具有特殊意義的符號:
[ ]
:數組
[A-Z]
:A到Z間的任意字母[0-9]
:0到9間的任意數字[aio]
:包含a或i或o[^aio]
:包含a或i或o以外的其他字母\
:特殊字符,通常會在字串開頭加 r
,以確保字串被辨識為原始字符串
\A
:指定單字在字串的開頭\Z
:指定單字在字串的尾端\b
:指定單字在字串的開頭或尾端\d
:包含數字(0~9)\s
:包含空白格(space)\w
:包含字(word),字可以是(任意字母、任意數字以及下底線).
:任意字元^
:指定單字在字串的開頭$
:指定單字在字串的尾端*
:指定單字出現一次以上(包含零次)+
:指定單字出現一次以上(不包含零次)傳回包含所有匹配項的列表,如果沒找到則傳回空列表。
傳回第一個找到的匹配項,傳回值為物件,沒找到則傳回 None
。
傳回一個列表,列表中的字串會依照指定字符切割。
傳回一個字串,新字串將匹配字符替代成指定字符,類似replace。
和 Java 的 try…catch… ,一樣的原理,學過就簡單。
如同Java的throw:
input()函數回傳使用者在屏幕上輸入的值,()
內的字則印在輸入之前:
最簡單就是用 print()
函數,印出結果在屏幕上,會自動換行:
開啟檔案需要兩個參數,檔案路徑和開啟模式。
另外可以選讀取模式
可以指定讀取的字元數:
也可以一次讀一行:
必須引用 os 模組!
如果檔案不存在會報錯,所以建議在刪除檔案前檢查一遍,其他創建、寫入檔案也是一樣的道理。
上面開關檔的方法當然也可以,但檔案處理過程中若是出了什麼意外,程式會直接中斷,造成已開啟的檔案未正常關檔,這時可以使用Python的with…as…寫法:
優點為 file 只會在區塊內生效,跳出區塊便會自動關檔,非常方便!
也可以自己客製化資源管理器,但這裡不多說,有需要可以去以下連結看。
參考網址:Python 的 with 語法使用教學:Context Manager 資源管理器
有三個步驟:
type()
:了解它的型態dir()
:了解它有哪些變數、函數可以使用help()
:查詢變數、函數的功能Python內建help()
,顯示函數的功能簡介。
也可以在自訂函數前,加上簡介,使用"""
包圍起來。