Python自學實境秀 1 張凱慶老師菩薩在Udemy上的《Python 專案開發入門的十堂課》
2:18:00 再試一下在VirtualBox虛擬電腦中以實體小米手機實機測試偵測Debug、散發(散布、發布、Release),Debug方案組態小米Redmi note2會閃退。Release才能成功 2:25:00
ShareX截圖OCR
2:44:00 安裝ShareX以截圖OCR轉文字方便作筆記.OCR效果還沒有Line好,但也不差了。
https://github.com/ShareX/ShareX
設定Text capture(OCR)的快速鍵 3:8:00
這樣就能直接截圖轉文字了 感恩感恩 讚歎讚歎 南無阿彌陀佛
3:19:00
另外還提供了調色盤、螢幕挑色器、螢幕顏色選取器(可就螢幕色彩,擷取所需的色調)
1-張凱慶老師菩薩在Udemy上的《Python 專案開發入門的十堂課》
Python 入門指南 http://kaiching.org/pydoing/py-guide/index.html
Visual Studio 2019安裝Python
先看張凱慶老師菩薩是用什麼IDE
6:50
20:00
第 2 節:第一堂 認識數位化程式設計與Python
2:5:30 電腦語言與 Python
26:00 電腦語言的種類
2:14:00
中文名稱 英文名稱 舉例
架構描述語言 Architecture Description Language UML
硬體描述語言 Hardware description language Verilog, VHDL
指令語言 Command language Unix commands
程式語言 Programming language C,C++,C#...
標記語言 Markup language HTML
樣式表語言 Style sheet language CSS
查詢語言 Query language SQL
2:16:00 程式語言的種類,低階語言、高階語言
30:00
Python需要的是直譯器,而C、C++則是編譯器
33:00
C 與 Python
38:30 下載Python直譯器
4. 在 Windows 中下載安裝 Python 直譯器
46:00 51:30安裝完成 53:00 允許作業系統接受長於260字元的全檔名(fullname)。
Edit with IDLE 開啟Python檔案
48:00 Run 執行
51:00
5. 在 Windows 中寫 Python 程式
IDLE (Python 3.8 32-bit)
55:30
Python 3.8.5 Shell
設定字型 58:00
Atom 文字編譯器 1:7:00 Visual Studio Code 1:15:00
1:20:50
6. 在 Mac 下載安裝 Python 直譯器
1:23:20
7. 在 Mac 中寫 Python 程式
1:30:00
利用Windows PowerShell執行Python程式碼,指令是 python再接全檔名(不分大小寫),如:
PS C:\Users\oscar> python x:/udemy-Python-guide-learn-lecture-PYDOING/helloTest1.py
hello oscar Sun 感恩感恩 讚歎讚歎 南無阿彌陀佛
PS C:\Users\oscar> cd x:/udemy-Python-guide-learn-lecture-PYDOING
PS X:\udemy-Python-guide-learn-lecture-PYDOING> python hellotest1.py
hello oscar Sun 感恩感恩 讚歎讚歎 南無阿彌陀佛
1:35:00
8. Python 程式概觀與縮排
3:26:30
3:33:30 tkinter程式庫
3:36:00 註解是用 單個「#」冠前
9. Python 的關鍵字與識別字
3:40:00
關鍵字的五大類:
。常數
3:55:00
常數 None(應即C的null)
。運算子
3:57:00 in、is
。簡單陳述
。複合陳述(即在C++、C#中須用大括號括起來的)
。定義
class 3:58:00 def 定義函式(方法)
命名慣例 4:2:00 類別用大寫駝峰型,類別之方法、屬性用小寫駝峰型,而變數用小寫
10. Python 的運算子與特殊符號
4:4:40
** 取次方
// 整數除法
@ 向量乘法
<< >> 位元計算,和C++一樣
\ 若單行陳述太長則用此作連續連接號 4:10:00
11. Python 的字面常數與文件字串
4:12:30
實數系中的複數 4:14:50
4:16:00 字串可用雙引號、單引號圍起來,意義是一樣的
三引號字串,用3個成對的雙引號或單引號圍起來的,多用於文件字串
4:19:00 字典 猶如 C++的map容器,是由key與value值的對組(pair)所組成,就如在C++也是以字典來作為map容器的演示實例說明的。此對組(pair)是以「:」來作key與value的區隔
4:23:30
文件字串
程式碼的說明文字
和其他語言不同,Python的程式文件是直接寫在程式碼中 4:31:40
印出 int的文件字串(說明文字)
for i in int.__doc__.split(“\n”):
print(i).
或
help(int)
要點二下展開
4:47:00
文件字串的寫法
分成二個部分
"""程式範例
說明文字"""
二者中間要空一行
4:50:40
12. Python 的標準程式庫與第三方程式庫
built-ins的不用import
14. 第二堂課導覽
4:57:40
5:1:00
字典即C++的map容器,而集合(不含重複元素的)即set容器
15. Python 的資料型態、變數與物件
在Python中所有的資料都是物件
Everything is an object.
5:5:10 5:7:00 這就是為什麼Python的執行效能會差於C,而開發的效率卻高過於C
5:12:00
Python的內建資料型態
型態名稱 內建函數(其實就是建構器(constructor))
()是呼叫運算子(call operator)
整數 int() 建構一個int類別的執行個體(物件)
浮點數 float()
複數 complex()
字串 str()
串列 list() 字面值以[]表示。C#為清單,C++亦有
序對 tuple() 字面值以()表示
字典 dict() 字面值以{}表示.C++為map容器
集合 set() 與C++同
5:21:40
須先將變數以「=」初始化才能使用
5:30:00
物件相關的函式
id() 可應用到判斷兩個物件是否一致(id相等即一致)
type() 求得物件所屬的類別(即物件型別)
print() 印出「__str__()」的值
dir() 可列出物件所有的屬性與方法
3:36:10
可見Python不是強型別的程式語言 5:54:00 卻是區分大小寫(case-sensitive)
字串(字面值)雖是字元序列,然其內字元是不可更易的,不像容器list串列等可以置換或增刪
5:40:30
16. Python 的內建資料型態 - 真假值
5:42:00
None=False
5:44:00 以 bool() 來判斷真假值(truth value)
數值只有「0」是False
5:46:00 空字串(””)也是False
預設為Fa1se的物件有
None
0、0.0、0j(複數的虛數部分)、Decimal(0)、Fraction(0,1)
‘’、””空字串、()序對、[]串列、{}字典、set()集合、range(0)
True and False
區分大小寫(case-sensitive)
5:59:20
is not 比較運算子
in 物件間是否有包含關係
6:2:00 「:」冒號類似VBA的用法,乃複合陳述之意。因Python不用大括號括起複合陳述之範圍,故須用冒號連結綴屬
17. Python 的內建資料型態 - 整數
6:8:00
2、8、16進位表示整數
** 求次方(乘方)
// 整數除法,即回傳的不是浮點數(floating point)而是整數,「/」除法回傳的是浮點數
// 求商數!(無條件捨去小數點後的值。C#則是直接用「/」就可求得整數商數。)
% 則是求餘數 6:19:00
int quotient = pos / NODE_DISTRANCE;
int remainder = pos % NODE_DISTRANCE;
6:30:00
位元運算只支援整數,因為電腦只認得整數
6:40:00 利用 oct() bin() hex()搞懂到底8進位、2進位、16進位是怎麼回事
divmod是求(商數,餘數)的函式,其引數(x,y)即x除以y(不見題目只見關鍵字:「以」→④倒序重組 以y除x,(以)y除x。以,用也。)
中文不好,行嗎?「除、除以」將傻傻分不清矣
6:50:20 運算子與建構子一樣,都是特殊的函式
如
pow(3,333)==3**333
pow為具名函式,而**則為運算子
18. Python 的內建資料型態 - 浮點數
6:58:00
有小數點就是浮點數(floating point)。可謂是用「.」來表示浮點數型別就是了
小數點可在數字的前端或末後,如「.0、0.」
.0==0.
以上結果是True
7:6:00 何謂文言文?共軛
7:12:30
所謂內建函式就是該類別的成員函式
只不過內建是專用在直譯器「內」有的,才叫「內」建。⑧找對主詞 :誰之「內」?在直譯器之內。
mod即英語:modulo 有時也稱作 modulus(模除、模數)求得的(結果)即餘數 7:3:00
modual
7:26:30
19. Python 的內建資料型態 - 複數
7:35:00
20. Python 的內建資料型態 - 迭代器與產生器
7:43:00 迭代器(iterator)溢位
產生器
yield
21. Python 的內建資料型態 - 字串與跳脫序列
7:52:00
和C++一樣,也有R開頭的,唯Python是r
r"……"
raw string
7:57:00
in 即C#的 SubString()、IndexOf()>-1方法
VBA的VBA.Instr()>0函式
not in 就是IndexOf()=-1、Instr()=0
8:0:00 Python 索引值也是從0開始
s[i:j]
「:」和Excel用來表示範圍者同也
8:4:00
「i」若為負值,乃表取得元素之方向顛倒、相反、倒過來也。 ④倒序重組 反序選取
8:17:00
恐怕字串在Python內建函式中仍然是沒支援二個字元長的擴充字集B以後的字
8:26:00
>>> a="南無阿彌陀佛"
>>>
>>> a
'南無阿彌陀佛'
>>> a+""
'南無阿彌陀佛\U0001a8a8'
>>> a.endswith('')
False
>>>
以上以「𪢨」字打字輸入測試,以下則以貼上輸入:
>>> a
'南無阿彌陀佛'
>>> a+'𪢨'
'南無阿彌陀佛𪢨'
>>> a.endswith("𪢨")
False
>>> a.endswith('𪢨')
False
8:22:20 8:34:00
和字串有關的內建函式
8:39:00
跳脫序列
8:45:00
格式化字串
format() 8:47:20
原來在C++中的{},也是「字典」(map容器),{}的是鍵值(key),而在「,」其後的則是對應到此鍵值的值(value)
%{},在Python這,用字典格式化字串非我所想像 8:59:00
print("11{0}".format(a))
以上是用索引值,以下是用變數名稱:
print("11{w}".format(w=a))
8:56:00
print("11%(w)s" % {"w":a})
d=digit
s=stirng 應是這樣 w,鍵值,而a為「字典」之「值」。字典(map)的值,就是這樣用「:」間隔的對組(pair)
9:3:30 9:7:30
22. Python 的內建資料型態 - 串列
9:15:00
串列綜合運算
可在串列中作運算
9:20:00
>>> a=[x for x in range(22)]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
>>> a=[x for x in range(22) if x %3==0]
>>> a
[0, 3, 6, 9, 12, 15, 18, 21]
9:25:00 串列的運算中
b=a.copy()是傳值(pass by value)
b=a(指定運算子(assignment operator))是傳址(pass by reference)
應該說單純直接用「=」則是傳址,若是經由copy方法回傳的來指定,則是傳值
9:40:30
23. Python 的內建資料型態 - 序對
序對(tuple)和串列(list)只差在序對(tuple)其元素是不可變的
即唯讀的串列
字串傳入max方法會回傳最後一個元素,min則是第一個
>>> c="《索隱》:"
>>> c.index("》")
3
>>> c.min()
>>> min(c)
'《'
>>> max(c)
':'
>>> c[-1]==max(c)
True
>>>
序對、串列則是取出其元素中首字元的最大、最小值
>>> d=("《","海","0","A")
>>> max(d)
'海'
>>> min(d)
'0'
>>>
漢字則應是照系統中部首筆畫排序,或作業系統內定的排序方法排序,如圖(測試過後並不影響,可見可能是Python自己有自己的一套排序方法): 10:3:00 :
目前系統用筆劃數排,但Python排出來仍是部首筆畫排序也。
>>> a
['飛', '龍', '在', '天']
a.sort()
>>> a
['在', '天', '飛', '龍']
序對(tuple)雖然是唯讀的list,但若其中元素有list型別,該元素位置不可變,但內容物可變:10:17:10
>>> b=a
>>> b
['在', '天', '飛', '龍']
>>> b.append(list("南無阿彌陀佛"))
>>> b
['在', '天', '飛', '龍', ['南', '無', '阿', '彌', '陀', '佛']]
>>> a
['在', '天', '飛', '龍', ['南', '無', '阿', '彌', '陀', '佛']]
>>>
>>> a[4].append(tuple("海賢老和尚"))
>>> b
['在', '天', '飛', '龍', ['南', '無', '阿', '彌', '陀', '佛', ('海', '賢', '老', '和', '尚')]]
>>> c=tuple(b)
>>> c
('在', '天', '飛', '龍', ['南', '無', '阿', '彌', '陀', '佛', ('海', '賢', '老', '和', '尚')])
>>> c[4].remove("佛")
>>> c
('在', '天', '飛', '龍', ['南', '無', '阿', '彌', '陀', ('海', '賢', '老', '和', '尚')])
>>> c[4].clear()
>>> c
('在', '天', '飛', '龍', [])
>>> a
['在', '天', '飛', '龍', []]
>>> b
['在', '天', '飛', '龍', []]
>>>
10:20:00
24. Python 的內建資料型態 – range
整數數列(其元素型別為數字(整數int))
range()建構子有2種多載
都是左包含的
>>> a=range(1,10,3)
>>> a
range(1, 10, 3)
>>> for i in a:
print(i)
1
4
7
>>>
10:35:00
>>> a=range(10)
>>> b=list("0123456789")
>>> a==b
False
>>> len(a)==len(b)
True
>>> j=0
>>> for i in a:
if i!=int(b[j]) :
print(str(i) +"\t"+ b[j])
j+=1
10:40:00
25. Python 的內建資料型態 - 位元組與位元組陣列
bytes ,bytearray
bytes,如tuple序對是不可變的
bytearray則是可變的
>>> a=b"南無阿彌陀佛"
SyntaxError: bytes can only contain ASCII literal characters.
>>> a=b"abc"
>>> type(a)
<class 'bytes'>
10:45:00
>>> a=b"abc"
>>> type(a)
<class 'bytes'>
>>> b=bytearrray(a)
>>> b[0]=ord(b's')
>>> b
bytearray(b'sbc')
>>>
10:55:00
>>> a="南無阿彌陀佛"
>>> a
'南無阿彌陀佛'
>>> b=a.encode(encoding="UTF-8")
>>> b
b'\xe5\x8d\x97\xe7\x84\xa1\xe9\x98\xbf\xe5\xbd\x8c\xe9\x99\x80\xe4\xbd\x9b'
>>> c=b.decode(encoding="UTF-8")
>>> type(c)
<class 'str'>
>>> type(b)
<class 'bytes'>
>>> c
'南無阿彌陀佛'
>>>
26. Python 的內建資料型態 - 字典
10:56:00
{key:value,key:value,……}
鍵值key,不可變
11:0:00
和C++的map一樣,當鍵值不存在時,會直接逕行新增一個元素
>>> a={1:2,4:5}
>>> a[6]=3
>>> a
{1: 2, 4: 5, 6: 3}
>>>
一樣時只用指定運算子(assignment operator)時是傳址,而將copy()方法回傳的值再指定,則是傳值
>>> a
{1: 2, 4: 5, 6: 3}
>>> b=a
>>> b
{1: 2, 4: 5, 6: 3}
>>> b[7]=3
>>> b
{1: 2, 4: 5, 6: 3, 7: 3}
>>> a
{1: 2, 4: 5, 6: 3, 7: 3}
>>> b=a.copy()
>>> b
{1: 2, 4: 5, 6: 3, 7: 3}
>>> b[10]=3
>>> b
{1: 2, 4: 5, 6: 3, 7: 3, 10: 3}
>>> a
{1: 2, 4: 5, 6: 3, 7: 3}
27. Python 的內建資料型態 - 集合
11:10:00
set
frozenset
雜湊(hash)是為了做索引值,以判定有無重複。若值可變動,則索引就會跟著變動,如何比對?故集合(set、{}、frozenset)其元素均須係不可變動之型別
>>> a=set(range(10))
>>> b=frozenset(range(10))
>>> b.issubset(a)
True
>>> a.issubset(b)
True
>>> a.issuperset(b)
True
>>> b.issuperset(a)
True
>>>
11:20:00
28. Python 的內建資料型態 - 資源管理器
1:23:00 1:24:30
29. Python 的內建資料型態 - 其他與例外
11:27:00
程式碼物件
1:30:00
例外
1:31:30
30. Python 的內建型態轉換規則
隱含轉型
11:51:00
31. Python 的物件模型
鴨子
留言