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 的物件模型

鴨子








留言

熱門文章