1 of 58

Python程式設計入門

2022最新版Python基礎入門課程

1

▶

2 of 58

2

3 of 58

3

黃信溢 文淵閣工作室

david@e-happy.com.tw�http://www.e-happy.com.tw

https://www.facebook.com/ehappytw

茶米老師教室�YouTube頻道

資訊教育初學特訓班�Facebook社團

文淵閣程式特訓班�Facebook粉絲專頁

▶

4 of 58

​

擁抱Python邁向未來

Python初學特訓班

4

5 of 58

Python 程式語言簡介

Python 程式語言是由吉多范羅蘇姆 (Guido van Rossum) 所創建,是一種物件導向、直譯式的電腦程式語言。根據一些較權威的機構如 IEEE、Tiobe 統計,Python 為目前最受歡迎的程式語言前幾名。

​

5

6 of 58

6

示意圖非當事人

請問老師,封面要怎麼設計?

既然是Python,那就放條蛇吧!

哇,那太猛了,一定很亮眼,太棒了!

呵呵,我也對自己那麼有創意很苦惱啊 ...

A few moment later

老師,我看到很多人買了書之後不敢看!

啊?為什麼,是書內容有什麼問題嗎?

是因為有很多人怕封面上那條蛇!!

.........

業配就是來得那麼突然 ...

這是廣告�但無法跳過

7 of 58

Python 程式語言簡介

六年前的 1989 年 12 月,我在尋找一門『課餘』程式設計專案來打發耶誕節前後的假期時光。假期裡我的辦公室關門,但我有一台家用電腦。我決定為當時我正構思的一個新的指令碼語言寫一個解譯器,它是 ABC 語言的繼承,對 UNIX / C 程式師會有吸引力。作為一個略微有些奇怪想法的人和《蒙提‧派森的飛行馬戲團》(Monty Python‘s Flying Circus)的狂熱愛好者,我選擇了 Python作為專案的名稱。

7

Python 的創始人吉多 · 范羅蘇姆(Guido van Rossum)

8 of 58

8

64 歲 Python 之父重返職場

退休太無聊了,我準備去微軟打工!

9 of 58

Python 程式語言的特色

  • 簡單易學、功能強大
  • 直譯式程式語言
  • 高階程式語言
  • 跨平台
  • 免費且開源
  • 可移植性、可嵌入性

9

  • 豐富且多元的模組
    • 人工智慧、網路爬蟲、大數據、機器學習、深度學習、自然語言、網頁應用程式
    • 物件導向的特性,易包裝成模組套件
    • 問題導向

10 of 58

​

雲端開發平台 Google Colab

Python初學特訓班

10

11 of 58

Google Colab:雲端的開發平台

Colaboratory 簡稱Colab,是由 Google 所提供,一個支援Python的雲端開發平台,主要目的是想要幫助人工智慧、機器學習和資訊教育的推廣。

11

  • 開發者不需下載、不需安裝,只需要瀏覽器就可以運作,完全免費。
  • 在Colab 中撰寫的程式碼預設是儲存在使用者的Google 雲端硬碟中,執行時由虛擬機器提供強大的運算能力,不會用到本機的資源,而且還提供免費的GPU。
  • Colab 預設安裝了一些機器學習時常用的模組,像是TensorFlow、scikit-learn、pandas 等,讓你可以直接使用!

12 of 58

Colab 建立筆記本

  • https://colab.research.google.com
  • 第一次要輸入Google帳號登入。
  • Colab 是以「筆記本」方式儲存。在筆記本管理頁面按右下角 新增筆記本 就可新增一個筆記本檔案。
    • 進入首頁
    • 開啟新檔
    • 更改檔案名稱
    • 檔案儲存位置:�預設<Colab Notebooks>
    • 開啟檔案:�範例檔案(HelloPython.ipynb)

12

13 of 58

Colab 的開發設定與操作

  • 使用介面的介紹
    • 功能表
    • 側邊欄
    • 儲存格:程式碼、文字
    • 儲存格工具列
  • 程式儲存格的操作
  • 文字儲存格的操作
  • 連線虛擬機器
  • 檔案總管的功能
  • 筆記本設定

13

14 of 58

課本課程內容分析

Python初學特訓班

14

15 of 58

15

16 of 58

變數、資料型態

Python初學特訓班

16

17 of 58

變數

  • 變數命名主要是 英文字母、數字及 _,第一個字母不能是 數字。
  • 英文大小寫字母有區分。
  • 不要使用到保留字。

​

x = 0 ; y=1

a = b = c = 20

age, name = 18, "林大山"

17

18 of 58

資料型態1

  • 變數不需要宣告資料型態就可以使用,在指定變數值時會自動給予資料型別。
  • 變數資料型態:
    • 整數(int)、浮點數(float)、字串(str)、布林(bool)
  • 數值分為 整數(int) 及 浮點數(float)
    • num1 = 5566
    • num2 = 12.34

18

19 of 58

資料型態2

  • 字串(str) 的值由引號('或")包含。

name = "David"

name = 'Lily'

  • 脫逃符號(\)的使用

name= "David's iPhone"

name = 'David\'s iPhone'

  • 多行字串

msg="""

第一行內容

第二行內容

"""

19

20 of 58

資料型態3

  • 布林值代表了是、否,值為 True、False,要注意值的第一個字母要大寫。

isMarry = True

isShow = False

  • 查看資料型態

type()

  • 資料型態轉換

int()、float()、str()、eval()

20

21 of 58

輸出與輸入

Python初學特訓班

21

22 of 58

print()命令

  • 語法

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

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

​

  • 範例

print(100, "多吃水果", True)

print(str(100)+"多吃水果"+str(True))

print(100, "多吃水果", True, sep="&")

print("x=2", "y=6", sep="&", end=".")

22

23 of 58

print()-以%命令參數格式化

  • 語法

print(格式化字串 % (參數列))

    • %s 字串, %d 數值, 預設靠左對齊
    • %3d 代表3位數字, %3s 代表3個文字字串
    • %-3d 或 %-3s 代表文字數字靠左對齊
    • %.2f 代表取2位小數,四捨五入
    • %6.2f 代表6位數字(3位整數,1位小數點,2位小數)
  • 範例

print("%s 的成績為 %d" % ("王大山", 75))

print("%s 成績為 %5d" % ("王大山", 75))

print("%5s 成績為 %6.2f" % ("王大山", 75))

23

24 of 58

print()-以format()函數格式化

  • 語法

print(格式化字串.format(參數列))

    • {}:參數位置,多個{}預設要以後方參數順序為準
    • {i}:指定插入參數的索引值,如{0}代表第1個
    • {i:格式化指定}:參考%的格式化指定
  • 範例

print("{}成績為{}".format("王大山", 75))

print("{1}是{0}的成績".format("王大山", 75))

print("{0:5s}成績為{1:.2f}".format("王大山", 75))

24

25 of 58

input()-命令

  • 語法

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

*由input所接收的值型別是字串喔!

​

  • 範例

#請修正程式的錯誤

score1 = input("請輸入數學成績:")

score2 = input("請輸入國文成績:")

total = score1 + score2

print("你的成績是 %d 分" % total)

25

score.py

26 of 58

註解

  • 語法
    • # 單行或行內註解文字
    • """ 多行註解文字 ... """
  • 範例

"""

以下是註解程式的內容

"""

a = 1 #變數a

b = 2

#以上分別宣告了變數 a 及 b

​

26

27 of 58

運算子

Python初學特訓班

27

28 of 58

運算子1

  • 算術運算子

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

  • 比較運算子

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

  • 邏輯運算子

not、and、or

  • 複合指定運算子

+=、-=、

28

29 of 58

運算子2

  • 常見運算子順序

​

​

29

( ) (括號)

** (指數)

+, - (正負號)

*, /, //, +, - (運算)

<, <=, >, >=, ==, != (比較)

not, and, or (邏輯)

30 of 58

範例練習

攝氏華氏換算器

•輸入攝氏溫度轉為華氏 華氏 = 攝氏*(9/5)+32

•輸入華氏溫度轉為攝氏 攝氏 = (華氏-32)*5/9

​

BMI計算機

•詢問使用者的身高、體重,計算BMI值

•公式 BMI = 體重(kg) / 身高(m)2

30

31 of 58

判斷式

Python初學特訓班

31

32 of 58

流程控制結構 – 循序結構

  • 循序結構 �是程式預設的執行方式,也就是一個程式敘述接著一個程式敘述,由上而下的依序的執行。

32

程式敘述

程式敘述

程式敘述

33 of 58

流程控制結構 – 選擇結構

  • 選擇結構是條件式判斷的選擇執行的方向,分為單向判斷、雙向判斷及多方判斷。

33

程式敘述

條件式

成立

不成立

不成立

不成立

不成立

程式敘述

條件式

成立

不成立

程式敘述

條件式1

條件式2

條件式3

程式敘述1

程式敘述2

程式敘述3

成立

成立

成立

單向判斷

雙向判斷

多向判斷

34 of 58

流程控制結構 – 重複結構

  • 重複結構 �迴圈控制,可以重複執行一個程式區塊的程式碼,提供條件結束迴圈的執行。

34

程式敘述

條件式

成立

不成立

35 of 58

判斷式1

  • 單向判斷式

if 條件式:

程式區塊

​

  • 雙向判斷式

if 條件式:

程式區塊一

else:

程式區塊二

​

35

範例

score = int(input("輸入分數:"))

if score >= 60:

print("及格!")

else:

print("不及格!")

​

36 of 58

判斷式2

  • 多向判斷式

if 條件式一:

程式區塊一

elif 條件式二:

程式區塊二

elif 條件式三:

………

else:

else程式區塊

36

範例

score = int(input("輸入成績:"))

if score >= 90:

print("優等")

elif score >= 80:

print("甲等")

elif score >= 70:

print("乙等")

elif score >= 60:

print("丙等")

else:

print("丁等")

37 of 58

範例練習

判斷奇偶數

請使用者輸入一個整數後,判斷該數為奇數還是偶數。

​

判斷是否為閏年

請使用者輸入一西元年,判斷該年是否為閏年。

規則:西元年若是整百年,如果能被400年整除是閏年,若不是整百年能被4可整除,為閏年。

37

38 of 58

自訂函式

Python初學特訓班

38

39 of 58

自訂函式

  • 建立函式的語法為:

def 函式名稱([參數1, 參數2, ……]):

程式區塊

[return 回傳值1, 回傳值2, ……]

​

  • 例如:建立名稱為 SayHello() 的函式。

def SayHello():

print( "歡迎光臨!")

​

39

直接�執行

加上一�個參數

加上多個參數

加上�回傳值

40 of 58

範例練習

  • 建立名稱為 GetArea() 的函式,以參數傳入矩形的寬及高,計算矩形面積後將面積值傳回。

def GetArea(width, height):

area = width * height

return area

​

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

def tc2tf(tc):

tf = tc * 1.8 + 32

return tf 

TC = float(input("請輸入攝氏溫度:"))

TF = tc2tf(TC)

print("華氏 %.1f 度為攝氏 %.1f 度" % (TF, TC))

40

41 of 58

自訂函式:變數有效範圍

  • 全域變數:定義在函式外的變數,其有效範圍是整個Python檔案。
  • 區域變數:定義在一個函式中的變數,其有效範圍是在該函式內。
  • 若有相同名稱的全域變數與區域變數,以區域變數優先:在函式內,會使用區域變數,在函式外,因區域變數不存在,故使用全域變數。
  • 如果要在函式內使用全域變數,需在函式中以 global 宣告。

41

42 of 58

串列與整數串列

Python初學特訓班

42

43 of 58

認識串列(List)1

  • 串列(List) 是集合物件,又稱為「清單」或「列表」,與其他語言的「陣列 (Array)」相同。
  • 例如,要儲存一個班級學生的成績,往往需要宣告大量的資料,但利用串列就能在一個變數中,儲存所有學生的成績:

​

43

值

85

90

75

92

變數

X1

X2

X3

X4

串列

X[0]

X[1]

X[2]

X[3]

X1=85, X2=90, X3=75, X4=92

X=[85, 90, 75, 92]

44 of 58

認識串列(List)2

  • 宣告

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

​

  • 範例

list1 = [1, 2, 3, 4, 5] �#元素皆為整數

list2 = ["香蕉", "蘋果", "橘子"] �#元素皆為字串

list3 = [1, "香蕉", True] �#包含不同資料型態元素

44

45 of 58

取得串列元素

  • 語法

元素值 = 串列名稱[索引值]

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

  • 說明�索引值是從 0 開始計數,索引值不可超出串列的範圍。
  • 範例

list1 = [1, 2, 3, 4, 5]

print(list1[0])

print(list1[1:4])

print(list1[-1]) #取出最後一個元素值

45

46 of 58

range() 整數串列

  • range() 可以定義整數串列
  • 語法

串列變數 = range([起始值,] 終止值 [,間隔值])�*產生的串列是起始值到「終止值 - 1」的串列

  • 範例

list1 = range(5) #list1=[0,1,2,3,4]

list2 = range(3, 8) #list2=[3,4,5,6,7]

list3 = range(3, 8, 2) #list3=[3,5,7] 元素值每次增加2

list4 = range(8, 3, -1) #list4=[8,7,6,5,4] 間隔值可以是負值

46

47 of 58

迴圈

Python初學特訓班

47

48 of 58

關於迴圈

  1. 專門用來處理重複事件的命令稱為「迴圈」。
  2. 迴圈命令有:
    • for 迴圈�用於執行固定次數的迴圈。
    • while 迴圈�以判斷條件來決定執行次數,用於執行次數不固定的迴圈。

48

49 of 58

for 迴圈

  • 語法

for 變數 in 串列:

程式區塊

  • 範例1 :顯示串列元素 (for list)

fruits = ["香蕉", "蘋果", "橘子"]

for fruit in fruits:� print(fruit, end=",")

  • 範例2 :計算 1+2+…+10 之和 (for range)

total = 0

for i in range(1, 11):

total += i

print("total=%d" % sum)

49

50 of 58

while 迴圈

  • 語法

while 條件式:

程式區塊

  • 範例:計算 1+2+…+10 之和

total=0; n=1

while(n<=10):

total += n� n += 1

print(total) #1+2+……+10=55

50

51 of 58

跳出及跳過迴圈

  • break 命令強制離開迴圈,例如:

for i in range(1,11):

if(i==4):

break

print(i, end=",") #執行結果:1,2,3,

  • continue 命令在迴圈執行中途暫時停住不往下執行,而跳到迴圈起始處繼續執行,例如:

for i in range(1,11):

if(i==4):

continue

print(i, end=",") #執行結果:1,2,3,5,6,7,8,9,10,

51

52 of 58

範例練習

九九乘法表

請列印出一份由2到9的九九乘法表。

​

繪製三角形

請印出下面的三角形

52

53 of 58

模組

Python初學特訓班

53

54 of 58

模組

import 命令的語法為:

import 模組名稱

​

通常模組中有許多函式可以使用,語法為:

模組名稱.函式名稱

​

範例

使用 random 隨機模組中的 randint 隨機整數函式,由 1 到 10 中隨機取出一個整數:

import random

pickno = random.randint(1,10)

print(pickno)

54

55 of 58

模組

import 命令的第二種語法:

from 模組名稱 import *

匯入模組後,可以直接使用函式。

範例

使用 random 隨機模組中的 randint 隨機整數函式,由 1 到 10 中隨機取出一個整數,其程式為:

from random import *

pickno = randint(1,10)

print(pickno)

55

56 of 58

模組

import 的模組或模組中的函式名稱若太長,可以取一別名:

import 模組名稱 as 別名

from 模組名稱 import 函式 as 別名

範例

import random as r

pickno = r.randint(1,10)

print(pickno)

56

57 of 58

範例練習

終極密碼

  1. 隨機在1~100間產生一個數字。
  2. 如果猜中答案,恭喜你答對了。遊戲結束。
  3. 如果答錯
    1. 如果猜的數字比正確答案大。則提示猜小一點。
    2. 如果猜的數字比正確答案小。則提示猜大一點。

from random import randint

ans = randint(1, 100)

guess = 0

while ans != guess:

guess = int(input('請輸入號碼:'))

if guess > ans :

print('請猜低一點!')

elif guess < ans :

print('請猜高一點!')

else:

print('猜中了!')

break

57

58 of 58

感謝您的參與

黃信溢 @茶米老師教室

▶