一天學會 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 程式語言兩個重要課程
親手從零開始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圖片

人工智慧大數據專業技能培訓班,真人開班教學加線上[ 限時折扣]

  • 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類別

開始遊戲

人工智慧大數據專業技能培訓班,真人開班教學加線上[ 限時折扣]