一天學會 Python–從零開始徹底精通Python 程式語言,親手乒乓球遊戲實作

Python 程式語言教學投影片

一天學會 Python–從零開始徹底精通Python 程式語言,親手乒乓球遊戲實作,親手人機界面影像處理實作

用一天的時間打好Python基礎,用深入淺出地說明,從零開始徹底精通Python程式語言,學習Python程式語言的精華.應用在大數據,機器學習和人工智慧,親手人機界面設計Tkinter及影像處理實作

從這19小時的課程,你會學到

  • 使用Python程式語言
  • 學習Python物件導向程式語言
  • 使用Python作數學運算
  • 使用Python作大數據運算基礎
  • 物件導向程式設計精華
  • 使用Python作機器學習基礎
  • Python直譯器與計算機
  • 變數資料型態
  • 運算式是由運算子與運算元組成
  • +加-減*乘/除是運算子,先乘除後加減的結合優先順序
  • =是分配符號,將右邊的值分配給左邊變數
  • 變數 運算式與運算子 串列 堆疊 佇列
  • 布林運算式,布林值為True或False
  • 在if敘述中,條件後的敘述只執行一次,而在while敘述中,則可執行一次以上。
  • 函數,將多個複雜的程式區塊包在函數裡面,這樣在需要時,可以重複呼叫它.
  • 遞迴函數是自己呼叫自己的函數,有最終值,開始回傳.
  • 類別,成員屬性與成員方法
  • 異常或錯誤處理
  • 開啟,關閉及寫入檔案
  • Pycharm安裝除錯及安裝函式庫
  • 函數預設參數值
  • 函數pass敘述沒做任何事
  • 使用者自訂函數
  • 區域變數的生存空間
  • 遞迴函數
  • 迴圈結構for
  • 迴圈結構while
  • Python 精通程式語言 類別
  • 類別class與封裝
  • 建構函數__new__()
  • Python並沒有強制資料成員一定要被封裝
  • 確保物件資料的安全性。使用者不直接存取object物件資料,而透過方法介面去存取
  • Python 精通程式語言 繼承
  • Python 物件導向程式語言
  • 父類別和子類別
  • 父類別與子類別的關係
  • Python 多型、動態聯繫
  • Python 物件導向程式設計實作繼承,多型
  • Python行程平行運算
  • Process,start()啟動行程
  • os,getpid()得到行程編號
  • Queue可以用在行程和執行緒儲存資料
  • 行程的生產與消費
  • 行程
  • 以執行緒Thread來執行
  • 執行緒的鎖
  • 生產與消費使用執行緒
  • Python資料及檔案處理
  • 開啟寫入文字檔模式wt
  • 開啟寫入二進位檔模式wb
  • 用with來關閉檔案
  • 文字檔案結構JSON
  • ensure_ascii=False,indent=2設定dump為中文字
  • 親手網站擷取與爬蟲大數據資料使用Python
  • Flask模組
  • Web服務與自動化
  • BeautifulSoup抓Scrape網頁
  • 函數的名稱和參考位址
  • 費氏係數使用迴圈方式實作
  • Python建立和sqlite資料庫連接
  • SQL標準的資料庫語言,可以存取和更新資料庫的記錄資料。
  • SQLite支援的SQL92指令
  • 建立資料表和定義資料表欄位
  • 資料表記錄的查詢、插入、刪除和更新
  • Python程式語言資料型態
  • Python程式語言識別名稱
  • Python程式語言運算式與運算子
  • Python程式語言運算子結合優先順序
  • Python程式語言數字,字串與變數
  • 人機界面及影像處理
  • 人機界面Tkinter
  • Pillow影像處理
  • Python遊戲設計
  • 乒乓球遊戲

 

要求

使用電腦的初級能力
國中以上

說明

有人認為,既然可以學程式,當然是愈早學程式愈好。

以麻省理工學院媒體實驗室發展的程式語言為例,所創辦的公司線上課程, 設定的學習對象是學生。程式的設定與「創造力」與「應用力」有關。

無論是「快思」或「慢想」,每個朋友都有自己的步調

程式原本就是解決問題的工具,如果心裡沒有想法、沒有思考,就無法進行創作。

遊戲式的學習雖然短期吸引目光,但程式的本質需要思考,適當的教學方法對程式的認知是有幫助的。

快樂的學

文字模式的程式語言需要抽象的邏輯思考與數學概念,所以有效的程式學習,是學習愉快。

最後分享Python 的有趣經驗(Python 是「文字模式」程式語言)。在我們的課程中,無論學習模式是「快思」或「慢想」, 每個人都有自己學習的步調。

 

本課程包含

循序漸進,從Python一天學會基礎到從零開始徹底精通Python 程式語言並實作
本課程有一天學會 Python及從零開始徹底精通Python 程式語言兩個重要課程
親手從零開始Python 程式設計實作並圖形教學
這是華人界的知名科學家吳佳諺所推出的線上課程。
19個小時…..83講座…讓你徹底了解Python程式語言
親手人機界面設計Tkinter及影像處理實作Pillow
親手乒乓球遊戲實作
從零開始,從觀念入門,親手圖形化解釋,Python變數資料型態,運算式與運算子,資料結構,控制結構,函數,類別,繼承,異常或錯誤處理,使用matplotlib畫圖,Python 資料結構與畫圖簡介,數組tuple和集合set和Scipy科學函數庫,檔案與JSON資料結構讀寫,人機界面及影像處理,乒乓球遊戲,讓你徹底了解Python 程式語言。
初學者到進階使用者到徹底研究Python程式語言,對Python 程式語言有興趣的人,商管財經人士,文法商人員,一般工程師,理工醫,電子電機與資料工程師、資料科學家。
一天學會 Python–從零開始徹底精通Python 程式語言,Python 深度學習,Python 機器學習 為徹底研究機器學習,徹底研究深度學習課程。
這三套課程一天學會 Python為基礎重要課程,這三套為大數據人工智慧機器學習整合徹底研究課程

目標受眾是誰

想學習Python程式語言
人工智慧機器學習
想學習大數據的學生
想用Python解決問題的學生
任何想學習物件導向程式語言的人
想學習人工智慧基礎的人
想用Python來學習金融計算的人
想用Python來學習科學計算的人
想學TensorFlow+Keras的學生
PyCharm安裝及使用
想學邏輯運算子
想學一個選擇的if敘述
想學巢狀的if敘述與多重選擇決策
想學控制結構
想學函數的學生
想學Python 精通程式語言的人
想學Python 物件導向程式語言的學生
徹底研究Python程式語言
Python行程和執行緒
Python資料及檔案處理
行程的屬性
顯示行程資訊
檔案處理
開啟,關閉及寫入檔案
讀取檔案
讀寫資料
親手網站擷取與爬蟲大數據資料使用Python
Python的標準網路函式庫
廣域網路
封包與連接方法
http 200表示連接網路成功
HTML標籤
<html>標籤範例實作
Web伺服器
Bottle
Flask
Web服務與自動化
BeautifulSoup抓Scrape網頁
抓到a連結網頁的屬性
函數參數與引數
Lambda運算式
徹底解說Python和關聯式資料庫SQLite
SQL語言
資料定義語言(DDL)
資料操作語言(DML)
Python SQLite3資料庫模組
人機界面Tkinter
乒乓球遊戲實作
事件驅動程式設計
傾聽的函數物件
座標軸
使用tkinter套件
Pillow影像處理
RGB三顏色與像素
將本目錄的所有圖片都加上PNG圖片

課程網址[ 限時折扣 NT1500]

 

  • 1.下載及安裝Python軟體

1-1.在Mac下載及安裝Python軟體

使用pip install 套件名稱

  • 安裝套件
  • pip install 套件名稱
  • 解除安裝套件
  • pip uninstall 套件名稱
  • 檢視目前系統已經安裝的套件
  • pip list

安裝Anaconda,Numpy,Matplotilib

在Mac選取Launchpad打開Anaconda Navigator

在Mac可以選取Spider或jupyter notebook來執行

1-2.在Window 10下載及安裝Python軟體

在Window 10下載及安裝Python軟體

  • 在Window 10下載及安裝Python軟體

這是安裝程式軟體的路徑,預設是安裝在C:\Programs目錄下

在Window 10打開Python開發環境

這是Python的Shell直譯器

按下win鍵,選取命令提示字元

在命令提示字元下輸入python

進入python直譯器

離開python直譯器輸入exit()

  • 在Windows 10安裝Anaconda

安裝Anaconda,Numpy,Matplotilib

選取Python 3.6版本

使用conda安裝模組

選取Spider

選取Jupyter Notebook

1-3下載及安裝PyCharm

在Mac下載及安裝PyCharm

安裝完Python後,設定直譯器路徑

Pycharm可以使用Python和Jupyter notebook的檔案

在Pycharm新增函式庫

在Windows 10下安裝Pycharm

下載Community版

2.Python直譯器與計算機

  • Mac電腦/usr/local/bin
  • Windows電腦C:\python36
  • set path=%path%;C:\python36
  • 這是設定utf-8-*-編碼
  • #-*- coding: utf-8 -*-
  • #是註解符號
  • 輸入python執行
  • $ python

變數資料型態

    • 整數
    • 浮點數
    • 字串
  • 運算式是由運算子與運算元組成
  • +加-減*乘/除是運算子,先乘除後加減的結合優先順序
  • 運算元是變數,數字,字串和資料結構
  • =是分配符號,將右邊的值分配給左邊變數

2-1資料型態

Python支援的資料型態:

浮點數(floating point)

字元(char)

整數(integer)

物件(object)

布林常數(Boolean)

空值(null)

字串(string)

2-1-1整數

  • 十進位
  • >>> 88888
  • 88888
  • >>> 99999
  • 99999
  • >>> 1000
  • 1000
  • >>> 10
  • 10
  • >>> 15
  • 15

整數位元運算子

資料型態轉換成整數使用int()函數

整數int的數值大小,可以無窮大無窮小

2-1-2布林資料型態

  • 有True和False兩種布林資料型態

2-1-3浮點數型態

  • Python提供三種浮點數值,float,complex和標準函式庫的decimal.Decimal三種型態
  • 3.14159
  • 1.0e9=1000000000
  • 1.0e-3=0.001
  • 將其它資料類型轉成浮點數使用float()

Complex複數

  • 複數資料型態包含一對float浮點數,表現實數和虛數j.
  • >>> z=58-3.14159j
  • >>> z.real
  • 58.0
  • >>> z.imag
  • -3.14159

Decimal數字

  • Decimal數字,它的精確度是由我們來指定.
  • Decimal的引數可以是整數,或是字串.但不可以是浮點數,因為浮點數IEEE754的表達方式可能會有誤差.

2-1-4字串

  • 可以使用雙引號”或單引號’包起來的字串
  • >>> “林小寶”
  • ‘林小寶’
  • >>> ‘林曉雯’
  • ‘林曉雯’

多行文字包三重引號在裡面

將其他資料型態轉成字串使用str()函數

  • \n為換行
  • \tab 為空tab鍵
  • \’代表單引號
  • \”代表雙引號
  • \\代表反斜線

用[]符號來擷取字元

2-1-5物件類別

  • 類別是抽象的,而物件就是類別的實體。
  • 物件也是Python的資料型態。
  • 類別class的實體就是物件型態
  • >>> a=’justin’
  • >>> type(a)
  • <class ‘str’>
  • >>> x=5
  • >>> type(x)
  • <class ‘int’>
  • >>> y=8.9
  • >>> type(y)
  • <class ‘float’>

2-2識別名稱

每一個變數都有識別名稱。

我們變數宣告時,就是給該變數一個識別名稱。

所有的識別名稱是由字元、數字、下底線(_)所組成。

Python是有大小寫的區隔,a和A是不一樣的變數。

2-3運算式與運算子

邏輯運算子

關係運算子

算術運算子

2-3-1邏輯運算子

  • 邏輯運算子and,or,not

Python提供了三個邏輯運算子and,or,not.可以使用短路邏輯short-circuit邏輯

運算式出現在布林中,求值結果就是布林值

  • 身份運算子is
  • 成員運算子in

對於群集資料數組,串列和陣列,我們可以使用in運算子來測試隸屬關係

2-3-2關係運算子

比較運算子和邏輯運算子所得到的結果就是一個布林值(True或False)

2-3-3算術運算子

2-4運算子結合優先順序

運算子優先順序,先乘除後加減

2-5數字,字串與變數

變數名稱只能使用小寫字母(a到z),大寫字母(A到Z),數字(0到9),底線(_)

名稱的第一個字元不能用數字,Python會將底線開頭的名稱視為特殊用途(例如__main__)

3.資料結構

  • 變數
  • 運算式與運算子
  • 串列
  • 堆疊
  • 佇列

數組tuple,集合set和字典

  • 可以用數組tuple來儲存固定的元素,使用小括號()來建立一數組tuple
  • 集合的元素放置沒有按照順序,可以使用{}大括號來建立一集合Set
  • 集合加上索引就是字典{索引:值}

4.控制結構

  • 布林運算式,布林值為True或False
  • 在if敘述中,條件後的敘述只執行一次,而在while敘述中,則可執行一次以上。
  • While敘述的程序圖形中.選取結構和循序結構,都只執行程式敘述一次,如果我們要讓同一行程式重複執行好幾遍則要用迴圈敘述。
  • 迴圈敘述可以重複執行某一段程式好幾遍,直到條件的不成立才跳出這個迴圈。
  • 選取結構if
  • 語法if:
  • if 條件運算式:
  •     程式敘述1
  • else:
  •     程式敘述2
  • 迴圈結構while,for
  • 語法:
  • for  計數變數  in range(起始值,終始值):
  • 程式敘述

邏輯運算子

  • 邏輯運算子可以結合條件,以一個表達式判斷許多條件,而這些條件的結果不是真True就是假False。
  • and稱為”與邏輯運算子”,只有當所有條件都成立時才會回傳真True,否則回傳假False。
  • or稱為或邏輯運算子,只要運算式中一個條件成立就會回傳真True,只有當所有的條件都為假Fasle時,才會回傳假False。
  • not為相反邏輯運算子,真True的條件加上not相反邏輯運算子時,就會變成假False﹔當假False的條件加上not相反邏輯運算子時,就會變成真True。

一個選擇的if敘述

  • if 條件:

敘述

巢狀的if敘述與多重選擇決策

  • 在這個例子中有5個等級來做選擇,就叫做多重選擇。
  • 語法:
  • if (條件1):
    • 敘述1
  • elif (條件2):
    • 敘述2
  • elif (條件3):
    • 敘述3
  • elif (條件4):
    • 敘述4
  • else (條件5):
    • 敘述5

迴圈結構for

  • Python提供for敘述作為迴圈,除了迴圈主體敘述(statement),還有迴圈的條件結構。

迴圈結構while

  • 在if敘述中,條件後的敘述只執行一次,而在while敘述中,則可執行一次以上。

5.函數

將多個複雜的程式區塊包在函數裡面,這樣在需要時,可以重複呼叫它.

遞迴函數是自己呼叫自己的函數,有最終值,開始回傳.

pass敘述沒做任何事

預設參數值

使用者自訂函數

區域變數的生存空間

  • 函數的參數為區域變數.函數的參數生存空間只在函數的範圍內
  • 在函數內定義的變數,其作用範圍在函數內

遞迴函數

  • 我們可以將費氏級數定義成。
  • 遞迴函數有兩個條件。一個是最終遞迴的值,然後開始回傳;一個就是遞迴函數的運算式。這兩個條件就可以組成遞迴函數。fib()最終的值是fib(0)=0和fib(1)=1;遞迴函數的運算式是fib(index)=fib(index -1)+fib(index-2);。

函數參數與引數

  • 費氏係數使用迴圈方式實作
  • 函數的名稱和參考位址
  • 參數預設值的給值
  • 當函數預設值是物件參考時
  • 函數呼叫,每次重新分配串列物件
  • 關鍵字引數
  • 函數參數*name接受實體tuple,函數參數**name接受字典
  • *args代表任意數量的引數
  • Lambda運算式
  • Lambda關鍵字可以建立傳回一個匿名函數
  • 使用Lambda運算式當回傳匿名函數
  • 文件字串

套件模組

  • 自訂套件模組

我們可以在開設的forecastModule目錄中放__init__的檔案,這樣 Python 就會將這個forecastModule目錄當作一個套件,而這個目錄名稱就是套件名稱,__init__可以是空的檔案

  • 模組搜尋路徑

Python會到sys標準模組的path變數內的一串目錄名稱串列去搜尋

第一行空白行是一個’’空字串,代表目前檔案的目錄

Python內建字串相關函數

  • len()函數取得字串長度
  • split()函數來使用分隔符號來將字串分解成短字串的串列
  • join()函數將字串串列串成一個字串
  • +運算子連接字串
  • *用來複製字串

6.類別

成員屬性與成員方法

類別和實體變數

  • _init__(self,..)為建構函數,實體化物件時會呼叫它
  • self為自己這個物件
  • __init__(self)建構物件, __del__(self)解構物件

Python 精通程式語言  類別

  • 類別class與封裝

類別是抽象的,而物件就是類別的實體。在這我們將介紹物件類別圖來解釋類別。

物件導向程式設計(object oriented programming簡稱OOP)有幾個特色,分別為類別封裝、繼承inheritance、多型polymorphism。

資料封裝指的是在類別成員(資料欄或方法)宣告存取控制。使用公用public、私有者__,私有者__只有本類別的方法允許使用,公用者public任何類別都允許存取。

衍生類別為本類別的次類別(subclass)或稱為子類別、延伸類別(extended class),本類別稱為子類別的父類別(super class)或稱為父類別(祖先類別)。

  • 建構函數__new__()

當我們建立物件時,我們常要初始化物件的實體變數。初始化實體變數,是最經常看到的初始化。建構子是當我們使用_new__()來新增類別實體時,Python會自動執行該函數,以便初始化物件__init__()。

x=Complex(3.0,4.0),Python會先呼叫__new__()來建立Complex(3.0,4.0)物件,然後會呼叫__init__()來初始化Complex物件

建立物件第一步是新增變數x。第二步驟是Complex(3.0,4.0),也就是新增Complex(3.0,4.0)類別的物件,在主記憶體上為它配置空間。第三步驟是將剛剛在記憶體上新增物件的位置給x變數,這樣就完成參考(物件位置的分配),也就是將物件的位置給Complex類別型態的x變數。

  • 封裝

物件需要封裝,來確保資料不會直接被不正當的存取。

物件需要封裝於其它的系統。物件應該只開特定的方法來和程式其它部份交談,以確保程式的穩定性。

這些方法定義了介面,為物件和使用它們程式間的介面。

使用者clinet應該呼叫物件object的方法,而再使用物件的方法來存取物件object內部的資料。

這是確保物件資料的安全性。使用者不直接存取object物件資料,而透過方法介面去存取。

Python並沒有強制資料成員一定要被封裝。

Class Private 是以二個下底線 __ 開頭,而且不超過一個下底線 _ 結尾的的變數名稱,例如 __name __tricks,但是__init__() 就不是 class private,但這種兩個下底線開頭和結尾叫特殊方法

7.繼承

  • class 子類別(父類別1,父類別2,父類別3,..):
  •       敘述1
  •       敘述2
  • 當子類別繼承 (inheritance) 超過一個來源的時候,會以寫在最左邊的父類別優先繼承,多個父類別如果有相同名稱的屬性 (attribute) 與方法 (method) ,就會以最左邊的父類別優先。

多型:子類別和父類別有同名的getEngine()名稱

Python 精通程式語言  繼承

  • 物件導向程式語言

物件導向程式設計中,繼承是一個很重要的特色,它是讓軟體模組可以再使用的一個機制。當建立類別時,我們可以使用繼承機制來使用已存在類別的屬性和方法。這已存在的類別,我們稱為父類別或基礎類別,而使用它的類別稱為子類別或延伸類別。

衍生類別為本類別的次類別(subclass)或稱為子類別。延伸類別(extended class),本類別的延伸類別稱為上層類別(super class)或稱為父類別(祖先類別)。

  • 父類別和子類別
  • 父類別與子類別的關係

物件導向的優點之一繼承(程式可重複再使用性)。父親和兒子有相同的基因,有相同的血型和,而且思想行為都很相似,這就是繼承。在程式設計中,父親有的兒子就可以繼承,因此程式碼可以不用再寫,這樣就降低了相同的程式重複出現,而降低軟體程式的大小。因此不要重複的使用相同的程式碼,是物件導向繼承的重點。

物件導向程式設計另外一個重點是封裝。為了降低模組與模組之間,類別與類別之間的存取複雜度,因此要將資料封裝起來,以免造成資料存取的不一致性。資料的存取,只能在該類別中。要存取另外一個類別的資料,最好透過該類別的函數或者管理類別來存取,來保證資料存取的安全與一致性。

  • 多型、動態聯繫

子類別是父類別的特殊化,每一個子類別的實體都含有父類別的實體。例如每一個外聘員工都是員工,但,不是每個員工都是外聘員工。子類別的物件可以用來當作父類別型態的物件。這個就稱為多型(Polymorphism)。

  • 實作繼承,多型

Circle類別改寫Point類別__repr__()方法,多型

repr()函數會對給定的物件呼叫__repr__()特殊方法

8.異常或錯誤處理

使用raise關鍵字丟出例外

開啟,關閉及寫入檔案

檔案處理

  • fp=open(‘檔案名稱’,’檔案開啟模式’)

9.使用matplotlib畫圖

  • Matplotlib.pyplot是畫圖的命令集合函數.每一個pyplot函數可以建立或修改圖形

10.Python 資料結構與畫圖簡介

  • •數組tuple和集合set
  • •Scipy科學函數庫
  • •numpy模組建立矩陣
  • •Pandas資料結構
  • •Matplotlib畫圖

11.數組tuple和集合set和Scipy科學函數庫

  • 可以用數組tuple來儲存固定的元素,使用小括號()來建立一數組tuple
  • 集合的元素放置沒有按照順序,可以使用{}大括號來建立一集合Set
  • Scipy模組提供科學運算及線性代數的運算模組

12.numpy模組建立矩陣

  • •numpy模組建立矩陣
  • •矩陣運算
  • •reshape()改變陣列的長寬
  • •np.zeros((10,3))產生10*3的矩陣

13.Pandas資料結構

  • •使用pip install安裝pandas
  • •Pandas讀取csv
  • •讀取台灣加權股價指數csv檔,big5編碼
  • •Series序列資料
  • •pandas的DataFrame
  • •資料選擇與篩選
  • lambda可調式參數

14.Matplotlib畫圖2

  • •Matplotlib畫圖
  • •plt.plot([1,2,3,4])預設是X軸
  • •# ‘r—’紅色虛線,’bs’藍色矩形,’g^’綠色三角形
  • •scatter()散點圖函數
  • •meshgrid()函數畫網格

15.資料及檔案處理

  • 檔案處理
  • 開啟,關閉及寫入檔案
  • 讀取檔案
  • 讀寫資料
  • 開啟寫入文字檔模式wt
  • 開啟寫入二進位檔模式wb
  • 用with來關閉檔案
  • 文字檔案結構JSON
  • ensure_ascii=False,indent=2設定dump為中文字

16.人機界面及影像處理

  • 人機界面Tkinter

在圖形化介面,一個事件代表了一些動作,例如按下按鈕,拖拉滑鼠,在鍵盤上按下按鈕,在視窗上按下關掉視窗的按鈕,或者是任何期望引發回應的動作。

從tkinter人機界面套件輸入所有模組

from tkinter import *

#建立最上層視窗

root = Tk()

Tkinter事件處理

Tkinter選單

Tkinter影像圖片

使用pip安裝pillow

Tkinter滑鼠鍵盤事件

  • Pillow影像處理

使用pip安裝pillow

RGB三顏色與像素

使用PIL套件的Image物件

使用Image圖片的crop()函數來切割圖片

複製圖片並且貼上圖片

調整圖片長寬

將本目錄的所有圖片都加上PNG.png圖片

20.Python遊戲設計

  • 乒乓球遊戲

遊戲開始按下空白鍵

乒乓球掉到底下,乒乓球減少一顆

乒乓球撞到灰色磚塊可以消滅磚塊

球撞到黑色磚塊會變灰色磚塊

磚塊全部撞完,你贏囉

遊戲結束囉

  • 人機界面Tkinter

在圖形化介面,一個事件代表了一些動作,例如按下空白鍵按鈕,在鍵盤上按下左右鍵按鈕,在視窗上按下關掉視窗的按鈕,或者是任何期望引發回應的動作。

  • 乒乓球遊戲實作

MyGameObject類別

MyBall繼承自MyGameObject類別

MyPaddle類別繼承自MyGameObject類別

MyBrick類別繼承自MyGameObject類別

MyGame類別繼承自Frame類別

開始遊戲

課程網址[ 限時折扣 NT1500]