一、建置Python開發環境


Author

簡良諭

  • liangyuh@gmail.com
  • LineID: liangyuh

1.1、建置Python開發環境

常用開發環境


  1. Python3 網址
  2. Anaconda 網址
    • Spyder編輯器
    • Jupyter Notebook編輯器(推薦)
  3. 使用雲端 Google Colaboratory
  4. Visual Studio Code 網址
  5. 海龜編輯器 網址

Jupyter使用事項

1-2、Markdown語法筆記

  1. 標題:使用「#」符號加上標題文字即可成為標題,等級由「#」標題一、「##」標題二,一直到「######」標題六。要注意「#」與標題文字之間要有一個空白。
  2. 段落:一般的文字段落並不需要加上其他符號,如果要分段要用一個空行來區隔。
  3. 編號:使用數字加上「.」再空一格, 即可為段落加上編號。
  4. 清單: 使用「*」符號再空一格, 即可為段落加上清單。
  5. 引言區段: 使用「>」符號再加一空格, 即可將其後的段落設定為引文內容。
  6. 程式碼: 使用TAB鍵縮排後,即可開始輸入程式碼內容,分行直接按ENTER, 會自動縮排 完成輸入後按下Ctrl+ Enter鍵執行

1-3、安裝模組

可以使用 ! 來執行套件安裝

如 !pip install -U pytube

二、基本語法與結構控制

2-1、變數宣告及命名規則

2-2、資料型態及轉換

變數資料型態

資料型態轉換

變數的資料型態相當重要,要相同資料型態才能運算。

2-3、輸出函數:print( )

print()函數可以列印指定項目的內容

語法

print(項目1 [,項目2 ,… (,sep=分隔字元,end=結束字元]))

print()顯示的字串可以使用 + 進行組合,但不同型別要先轉為文字

print(項目 % (參數列))

參數格式化(%)--預設「靠右對齊」

以一對大括號{ }表示參數的位置。

語法為:

print(字串.format(參數列))


先設定變數,在print()中使用 {變數} 直接帶入字串之中

print(f字串)

2-4、輸入函數:input( )

input()是用來接收使用者輸入的資料, 輸入所接收的資料為「字串」

語法為

變數 = input([提示字串])

2-5、運算式

2+3中「2」,「3」是運算元,而「+」是運算子;運算式由運算元和運算子所組成

算術運算子

執行一般的數學運算

+、-、*、/、% (餘數)、// (商)、**(指數)

比較運算子(或關係運算子)

比較二運算式,正確傳回True, 錯誤傳回False

==、!=、>、>=、<、<=

邏輯運算子

結合多個比較運算式來得到結果

not、and、or

複合指定運算子

某些變數值常需作某種規律性改變,將變數值行運算再指定給原來的變數。

+=、-=、*=、/=、%=(餘數)、//=(商)、**=(指數)

字串運算

2-6、判斷式

Python語言以冒號「:」及縮排來表示程式區塊,縮排為1個Tab鍵或4個空白

單向判斷式

條件成立就執行

if 條件式 :
    程式區塊

雙向判斷式

if 條件式:
    程式區塊1
else:
    程式區塊2

多向判斷式

語法:

if 條件式1:
    程式區塊1
elif 條件式2:
    程式區塊2
elif 條件式3:
    程式區塊3
...
else:
    程式區塊4        

實戰題

請輸入金額,若10萬以上打8折、5萬以上打85折、3萬以上打9折、1萬以上打95折。

三、迴圈與資料結構

迴圈主要用來執行重複的事情。

3-1、串列:List

1.程式中的資料通常是以變數來儲存,如果有大量的資料時,使用串列來儲存,

2.串列中每一個資料稱為元素, 每一個元素相當於一個變數

3.要存取串列中特定元素,是以元素的位置作為索引

4.元素置於中括號[ ],元素以逗號「,」分隔

語法

串列名稱 = [元素1, 元素2, ……]

取得串列元素

元素值 = 串列名稱[索引值]
元素值 = 串列名稱[起始索引值:終止索引值]

*索引值是從 0 開始計數,索引值不可超出串列的範圍。用「:」取得的串列範圍是由起始索引值到「終止索引值-1」。

多維串列

串列的元素可以是另一個串列,形成多維串列,多維串列元素使用多個中括號[ ]

整數串列函數: range()

range()是建立整數循序串列

range(終止值)
range(起始值, 終止值, 間隔值)


3-2、迴圈

Python迴圈的函數有2個:

3-2-1、for 迴圈

for 迴圈用於執行固定次數的動作

for 變數 in 串列:   
  程式區塊

實戰題: 九九乘法

break 與 continue

break 強制離開迴圈

continue 在迴圈執行中途暫停不往下執行,而跳到迴圈起始處繼續執行

for...else迴圈

for...else迴圈通常會和if及break函數配合使用

語法為:

# 此內容會顯示為程式碼
for 變數n in range(串列):
    程式甲
    if(條件式):
        程式乙
        break
else:
    程式丙

for 迴圈

實作題: 判斷質數

使用者輸入一個大於1的整數,判斷該數是否為質數?

3-2-2、while 迴圈

while 迴圈用於執行次數不固定的迴圈。 若是造成無窮迴圈時,要用Ctrl+C鍵中斷程式執行 while 條件式:
程式區塊

實作題: 班級成績計算

逐一輸入學生成績, 若輸入「-1」表示結束輸入,請計算班上總成績及平均

3-3、串列的操作(*)

串列在Python應用很廣泛,有多種方法可以進行操作

append()和extend()的區別

二者都可以把資料加在串列的最後面

3-4、元組(*)

元組的結構和串列相同,但元組的元素個數及元素值都不能改變(串列是可以改變的)

元組是使用小括號, 如:tuple1=(1,2,3,4)

元組的優點:

有時為了程式執行相互轉換需求,Python提供

3-5、字典(*)

字典的結構與串列類似,元素是以「鍵-值」方式儲存,使用「鍵」來取得「值」,元素置於大括號{ }內。

字典={鍵1:值1, 键2:值2, ....}

字典的操作

字典的key()、values()及item()

通常將key()及values()取得的資料以list()函數轉換為串列,將二者組合就可以列印字典全部內容

get()及setdefault()

get()可取得「鍵」對應的「值」,不會改變元素

setdefault()使用方法與get()相同,

四、函數與模組

使用函式的優點:

4-1、自訂函式

將具有特定功能或經常重複使用的程式,撰寫成函式,需要時直接呼叫執行

4-1-1、建立自訂函式

語法

def 函式名稱([參數1, 參數2, ……]):
    程式區塊
    [return 回傳值1, 回傳值2, ……]

實作題: 攝氏溫度轉華式溫度

輸入攝氏溫度,求華氏溫度

4-1-2、不定參數的函式(*)

設定不定數目參數的時候,程式會以元組的方式將參數存在設定的參數中

4-1-3、函式中變數的有效範圍

變數依其有效範圍分為:

若有相同名稱的全域變數與區域變數時,在函式內以區域變數優先。

如果要在函式內使用全域變數時,要在函式內以global宣告

4-2、內建函式(*)

Python內建了許函式,可直接使用。

實作題--求值

請輸入若干正整數,求最大數、最小數、總和及排序。

4-3、模組(*)

Python有許多內建模組及第三方公司開發的模組,模組使用前必須先匯入,就可以使用

語法:

匯入模組: import  
import math
math.abs(-5)

匯入模組中指定函式: from ...import 
from math import abs, round
abs(-5)

別名的使用

如果模組的名稱太長,可以另取一個簡短的別名

import random as r

4-3-1、亂數模組:ramdom

實作題:擲骰子遊戲

choice()及sample()用法

sample()最重要的是可以取得指定數量且不重複的元素,常應用於樂透開獎

實作題:大樂透中獎號碼

大樂透中獎號碼為由1到49,取6個數字+1個特別號,撰寫大樂透中獎號碼,並由小到大顯示。

4-3-2、時間模組: time

常用的時間模組函數:

localtime([時間數值])

localtime([時間數值]):傳入時間數值來取得時間元組資訊

取得單一項目值的方式有二種:

# 此內容會顯示為程式碼

實作題: 顯示時間

設計一個看板,顯示以中華民國年份的現在時間

五、例外處理與檔案管理

5-1、例外處理try…except…else…finally

Python直譯器當執行程式發生錯誤時,會引發例外(except)並中斷程式執行,這時可以進行例外的處理動作,避免僅中止程式。

語法

try:
  程式碼A
except[例外狀況]:
  程式碼B
...
else:
  程式碼C
finally:
  程式碼D

說明

常用的錯誤表

5-2、檔案與目錄管理(*)

Python提供了os、shutil和glob等實用的模組,以方便操作檔案和目錄。

(本課程建議在Spyder或Vsc實作)

5-2-1、os模組

os提供取得工作目錄、建立目錄、刪除目錄、刪除檔案、執行作業系統命令等功能。

5-2-2、os.path模組

os.path用以處理檔案路徑和名稱

5-3、File檔案(待補充)