Python 程式設計入門:從 0 到函式

J5

Python 程式設計入門:從 0 到函式

歡迎翻開這本《Python 程式設計入門:從 0 到函式》。

這是一本為初學者準備的 Python 入門書,特別適合高中生、大學生、非資訊背景的學習者,以及第一次接觸程式設計的人。

本書會用白話、一步一步的方式,帶你從最基本的觀念開始學起。你不需要先有程式基礎,只要願意跟著章節慢慢練習,就能逐漸看懂 Python 的寫法,並寫出自己的小程式。

全書內容從 Python 簡介開始,接著介紹變數、輸入與輸出、運算子、條件判斷、迴圈、清單、字典、字串,最後走到函式。這些都是初學 Python 時最重要的核心基礎。

每一章都會依照固定節奏安排內容,包括本章重點、概念說明、範例程式、程式解說、常見錯誤、練習題和小結。你可以依照順序閱讀,也可以在做練習時回頭查找前面的內容。

如果你是第一次學程式,建議你不要急著往後翻。先把每一章的範例親手打過一次,再試著完成後面的練習題,學習效果通常會更好。

希望這本書能陪你把 Python 的基礎打穩,讓你從看得懂程式,到慢慢學會自己寫程式。

第 1 章 Python 簡介

本章重點

概念說明

Python 是一種語法清楚、容易上手的程式語言,很適合初學者學習。

程式語言是人類與電腦溝通的橋樑

範例程式

print("Hello, Python!")

程式解說

這行程式會把文字顯示在畫面上。

常見錯誤

練習題

  1. 把輸出內容改成你的名字。
  2. 試著輸出兩行不同的文字。
  3. 想一想 Python 可以用來做哪些事情?

練習題參考解答與解析

第 1 題

print("J5")

解析:只要把原本輸出的文字改成自己的名字即可,重點是熟悉 print() 的基本用法。

第 2 題

print("大家好")
print("我正在學 Python")

解析:連續寫兩個 print(),畫面就會出現兩行不同的文字。

第 3 題

參考答案:Python 可以用來做資料分析、網站開發、自動化工作、遊戲程式和教學練習。

解析:這一題沒有唯一答案,重點是知道 Python 的用途很多,而且很適合初學者入門。

小結

本章先建立對 Python 的第一印象,後續會逐步學更多語法。

第 2 章 變數與資料型態

本章重點

概念說明

變數就像一個有名字的盒子,可以把資料放進去,之後再取出來使用。

變數像有名字的盒子,可以把不同資料放進去

範例程式

name = "Amy"
age = 18
print(name)
print(age)

程式解說

name 儲存文字,age 儲存整數,兩者都是變數。

常見錯誤

練習題

  1. 建立一個 city 變數。
  2. 建立一個 score 變數並輸出。
  3. 試著修改變數內容後再印出。

練習題參考解答與解析

第 1 題

city = "Taipei"
print(city)

解析:先建立變數,再把城市名稱放進去即可。

第 2 題

score = 100
print(score)

解析:這題是練習把數字存進變數,並用 print() 看結果。

第 3 題

name = "Amy"
print(name)

name = "Jack"
print(name)

解析:同一個變數可以重新指定新的值,後面印出的結果就會跟著改變。

小結

學會變數後,就能讓程式記住資料並重複使用。

第 3 章 輸入與輸出

本章重點

概念說明

前面幾章我們已經學過變數,也看過程式可以把結果顯示在畫面上。從這一章開始,我們會讓程式更有互動感。

所謂的輸出,就是程式把訊息顯示給使用者看。例如顯示歡迎文字、計算結果、提醒訊息,這些都屬於輸出。

所謂的輸入,就是讓使用者把資料送進程式裡。例如輸入名字、年齡、分數,讓程式拿來做後續處理。

你可以把它想成一個很簡單的流程:

  1. 使用者先輸入資料
  2. 程式接收資料並存進變數
  3. 程式把結果顯示出來

這種流程看起來很基本,但幾乎所有互動式程式都會用到。像是登入系統、點餐系統、成績查詢、計算機,背後都離不開輸入與輸出。

在 Python 中,最常用的兩個工具就是:

只要先把這兩個工具學好,後面很多章節都會變得更好懂。

輸入輸出的基本流程圖

範例程式

範例 1:最基本的輸出

print("歡迎來到 Python 世界!")
print("今天開始學寫程式")

範例 2:輸出變數內容

student_name = "小美"
score = 95

print("學生姓名:", student_name)
print("考試分數:", score)

範例 3:接收名字並打招呼

name = input("請輸入你的名字:")
print("你好," + name)

範例 4:接收數字並進行簡單計算

age_text = input("請輸入你的年齡:")
age = int(age_text)
next_year_age = age + 1

print("你今年", age, "歲")
print("明年你會", next_year_age, "歲")

程式解說

關於 print()

print() 的用途很直接,就是把內容顯示在畫面上。

在範例 1 中,我們把兩句文字直接放進 print() 裡,所以程式執行後就會一行一行顯示出來。

在範例 2 中,我們不是直接印死文字,而是先把資料放進變數,再把變數內容輸出。這樣的好處是,之後只要改變變數的值,輸出的結果也會跟著改變。

你也可以發現,print() 不只能印文字,也能印數字、變數,甚至一次印多個內容。對初學者來說,用逗號把資料分開是很方便的寫法。

關於 input()

input() 會先在畫面上顯示提示訊息,然後等待使用者輸入內容。

例如這一行:

name = input("請輸入你的名字:")

它的意思是: - 先顯示「請輸入你的名字:」 - 等待使用者輸入 - 把輸入結果存進 name 變數

接著我們再用 print() 把問候語顯示出來。這就是一個最基本的互動程式。

為什麼數字輸入還要轉型?

這是初學者很常卡住的地方。

雖然你在鍵盤輸入的是 18、20、35,看起來像數字,但 input() 接收到的內容,預設會先當成文字來處理。

所以如果你想拿它做加法、減法,通常要先轉成整數。這就是範例 4 中 int(age_text) 的用途。

age_text = input("請輸入你的年齡:")
age = int(age_text)

第一行拿到的是文字。 第二行才把文字變成整數。

如果少了這一步,後面在做運算時就容易出錯。

常見錯誤

1. 忘記把輸入結果存進變數

錯誤寫法:

input("請輸入你的名字:")
print(name)

這樣會有問題,因為你沒有把輸入結果存到 name,後面卻直接拿 name 來用。

正確寫法:

name = input("請輸入你的名字:")
print(name)

2. 把輸入的數字直接拿去做運算

錯誤寫法:

age = input("請輸入年齡:")
print(age + 1)

這裡的 age 還是文字,所以會出現型態不符合的錯誤。

正確寫法:

age = int(input("請輸入年齡:"))
print(age + 1)

3. 文字忘記加引號

錯誤寫法:

print(歡迎來學 Python)

Python 會看不懂這串內容是什麼。

正確寫法:

print("歡迎來學 Python")

練習題

  1. 寫一支程式,先顯示一句歡迎訊息,再顯示你的名字。
  2. input() 讓使用者輸入姓名,接著輸出「歡迎你,某某某」。
  3. input() 讓使用者輸入年齡,並顯示「明年你會幾歲」。
  4. 讓使用者輸入兩個整數,計算它們的總和並輸出結果。

練習題參考解答與解析

第 1 題

print("歡迎來學 Python")
print("我的名字是 J5")

解析:這題主要是練習最基本的輸出,把兩句訊息依序顯示出來。

第 2 題

name = input("請輸入你的姓名:")
print("歡迎你," + name)

解析:用 input() 接收使用者輸入,再把變數內容串接到問候語中。

第 3 題

age = int(input("請輸入你的年齡:"))
print("明年你會", age + 1, "歲")

解析:因為年齡要做加法,所以要先把輸入文字轉成整數。

第 4 題

num1 = int(input("請輸入第一個整數:"))
num2 = int(input("請輸入第二個整數:"))
print("總和是:", num1 + num2)

解析:這題把輸入、轉型、計算和輸出結合在一起,是很好的綜合練習。

小結

這一章學到的內容很重要,因為它是程式與使用者互動的第一步。

你已經學會: - 用 print() 顯示訊息 - 用 input() 接收資料 - 把輸入內容存進變數 - 在需要計算時,先把文字轉成整數

只要把這些基本觀念練熟,後面在學條件判斷、迴圈和函式時,你就能更自然地寫出有互動的程式。

第 4 章 運算子

本章重點

概念說明

在日常生活中,我們常常會做很多比較與計算。

例如: - 今天買東西總共多少錢? - 考試分數有沒有及格? - 年齡是不是超過 18 歲?

在 Python 裡,這些動作都要靠運算子來完成。

運算子可以把它想成「做事的符號」。 有些符號負責計算,像是加法、減法;有些符號負責比較,像是大於、小於、是否相等。

如果沒有運算子,程式就很難處理資料,也無法根據結果做判斷。

這一章會先從最常見的幾種開始學:

這些內容看起來不難,但非常重要。後面在寫 if 判斷、迴圈條件時,幾乎都會用到。

運算子可以拿來計算,也可以拿來比較大小

範例程式

範例 1:基本算術運算

x = 10
y = 3

print("加法:", x + y)
print("減法:", x - y)
print("乘法:", x * y)
print("除法:", x / y)

範例 2:整除與餘數

apples = 10
people = 3

print("每人可分到:", apples // people, "顆")
print("剩下:", apples % people, "顆")

範例 3:比較大小

score = 75

print(score > 60)
print(score < 60)
print(score == 75)

範例 4:把比較結果用在生活情境

age = 20
is_adult = age >= 18

print("是否成年:", is_adult)

程式解說

1. 算術運算子

先來看最常見的數學運算:

範例 1 中的 x + y,意思就是把兩個數字加起來。

如果 x = 10y = 3,那麼: - x + y 會得到 13 - x - y 會得到 7 - x * y 會得到 30 - x / y 會得到 3.333333…

這裡要特別注意,除法 / 的結果通常會是小數。

2. 什麼是整除與餘數

有時候我們不是只想知道除法結果,而是想知道: - 一組東西平均分後,每人拿到幾個 - 最後會剩下多少

這時就會用到: - //:整除,只保留整數部分 - %:餘數

例如 10 顆蘋果分給 3 個人: - 10 // 3 結果是 3 - 10 % 3 結果是 1

這種寫法在分組、計算星期、判斷奇偶數時都很常見。

3. 比較運算子

除了計算,程式也很常需要做比較。

常見的比較運算子有: - >:大於 - <:小於 - >=:大於等於 - <=:小於等於 - ==:是否相等 - !=:是否不相等

比較後的結果只會有兩種: - True:表示成立 - False:表示不成立

例如:

print(8 > 5)
print(3 == 4)

第一行會得到 True,第二行會得到 False

這樣的結果在下一章的 if 判斷會非常重要,因為 if 就是看條件是真還是假,再決定程式要怎麼做。

4. 把結果存進變數

你不一定每次都要直接印出結果,也可以先存進變數。

像這一行:

is_adult = age >= 18

它的意思是把「是否成年」的判斷結果先存起來。 如果年齡大於等於 18,is_adult 就會是 True

這樣的寫法會讓程式更容易閱讀。

常見錯誤

1. 把 === 混在一起

這是初學者最常犯的錯。

錯誤觀念: 以為 score = 60 是在比較,其實不是,它是在把 60 放進 score

2. 以為除法一定會得到整數

很多人看到 10 / 2 得到 5 沒問題,就以為除法都會是整數。 但其實 / 在 Python 裡通常會保留成小數格式。

如果你只想要整數部分,應該用 //

3. 文字和數字直接相加

例如下面這種寫法就容易出錯:

age = 18
print("我的年齡是:" + age)

因為前面是文字,後面是數字,型態不同。

比較簡單的寫法是:

age = 18
print("我的年齡是:", age)

練習題

  1. 建立兩個變數,分別存入 12 和 5,印出它們的加法、減法、乘法結果。
  2. 試著計算 17 除以 4 的整除結果與餘數。
  3. 建立一個 score 變數,判斷它是否大於等於 60。
  4. 建立兩個數字,比較它們是否相等,並輸出結果。
  5. 想一想:如果今天有 25 顆糖果,要分給 6 個人,應該用哪一個運算子來算每人拿幾顆?又要用哪一個運算子算剩下幾顆?

練習題參考解答與解析

第 1 題

x = 12
y = 5
print(x + y)
print(x - y)
print(x * y)

解析:這題是練習最基本的算術運算子。

第 2 題

print(17 // 4)
print(17 % 4)

解析:// 會算整除結果,% 會算餘數,所以答案分別是 4 和 1。

第 3 題

score = 70
print(score >= 60)

解析:如果分數大於等於 60,結果就會是 True

第 4 題

a = 8
b = 8
print(a == b)

解析:== 是比較是否相等,不是指定值。

第 5 題

參考答案: - 算每人分到幾顆要用 // - 算剩下幾顆要用 %

解析:這題是在理解整除與餘數的生活應用。

小結

這一章我們學到,運算子是 Python 中非常基礎但非常重要的工具。

你已經認識了: - 如何用運算子做加減乘除 - 如何用 //% 處理平均分配與餘數 - 如何用比較運算子判斷大小與是否相等 - 比較結果會得到 TrueFalse

接下來進入條件判斷時,你就會看到這些運算子如何真正派上用場。

第 5 章 條件判斷

本章重點

概念說明

前一章我們學到比較運算子,像是大於、小於、等於。這些比較做完之後,會得到 TrueFalse

那麼,程式拿到這個結果之後,可以做什麼呢?

答案就是:條件判斷

所謂條件判斷,就是讓程式根據「條件有沒有成立」,決定接下來要執行哪一段程式。

例如: - 如果分數及格,就顯示「通過」 - 如果今天下雨,就帶雨傘 - 如果年齡超過 18 歲,就顯示「你已成年」

這些都是生活中很常見的判斷。

在 Python 裡,最常使用的條件判斷語法有三個:

學會這一章之後,你的程式就不再只是單純從上往下執行,而是能夠根據不同情況做出不同反應。

條件判斷會依照條件成立與否走向不同結果

範例程式

範例 1:判斷是否及格

score = 85

if score >= 60:
    print("及格")
else:
    print("不及格")

範例 2:判斷是否成年

age = 20

if age >= 18:
    print("你已經成年")
else:
    print("你還未成年")

範例 3:使用 elif 判斷成績等級

score = 78

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
else:
    print("再加油")

範例 4:搭配 input() 使用

number = int(input("請輸入一個整數:"))

if number > 0:
    print("這是正數")
elif number < 0:
    print("這是負數")
else:
    print("這是 0")

程式解說

1. if 的基本用法

最基本的條件判斷就是 if

if score >= 60:
    print("及格")

它的意思是: 如果 score >= 60 這個條件成立,就執行下面縮排的程式。

這裡要注意,if 後面一定要接條件,最後還要加上冒號 :

2. else 的用途

如果你希望條件不成立時,也要做某件事,就可以加上 else

例如:

if score >= 60:
    print("及格")
else:
    print("不及格")

這段程式表示: - 條件成立時,顯示「及格」 - 條件不成立時,顯示「不及格」

所以 else 可以理解成「其他情況都走這裡」。

3. elif 的用途

有時候情況不只兩種,而是三種以上,這時就很適合用 elif

例如成績判斷: - 90 分以上是 A - 80 分以上是 B - 70 分以上是 C - 其他就再加油

這時如果只用 ifelse 就不太夠,所以可以在中間加入 elif

elif 可以有很多個,會從上到下依序檢查。一旦有一個條件成立,就會執行對應內容,後面的條件就不再繼續判斷。

4. 縮排非常重要

Python 跟很多程式語言不一樣,它非常依賴縮排來表示程式的區塊。

例如:

if score >= 60:
    print("及格")

print("及格") 前面有縮排,表示它屬於 if 這個條件之下。

如果縮排不正確,Python 就會報錯,或讓程式邏輯跟你想的不一樣。

一般常見做法是使用 4 個空白作為一層縮排。

常見錯誤

1. 忘記加冒號 :

錯誤寫法:

if score >= 60
    print("及格")

ifelifelse 的行尾都需要冒號。

正確寫法:

if score >= 60:
    print("及格")

2. 縮排不一致

錯誤寫法:

if score >= 60:
print("及格")

這樣 Python 會看不懂哪一段程式屬於 if

3. 把 = 寫成 == 或反過來

在條件判斷中,應該使用 == 來比較是否相等。

例如:

if score == 100:
    print("滿分")

這裡的 == 才是比較,不是指定值。

練習題

  1. 建立一個 age 變數,判斷是否已成年。
  2. 建立一個 temperature 變數,如果大於 30 就顯示「天氣很熱」。
  3. 建立一個 score 變數,依照分數輸出 A、B、C 或「再加油」。
  4. input() 讓使用者輸入一個整數,判斷它是正數、負數還是 0。
  5. 想一想:如果今天要設計一個登入程式,哪些地方可能會用到條件判斷?

練習題參考解答與解析

第 1 題

age = 20
if age >= 18:
    print("已成年")
else:
    print("未成年")

解析:這題是最基本的 if 和 else 練習。

第 2 題

temperature = 32
if temperature > 30:
    print("天氣很熱")

解析:條件成立時才會執行縮排中的內容。

第 3 題

score = 85
if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
else:
    print("再加油")

解析:這題是在練習多條件判斷。

第 4 題

number = int(input("請輸入整數:"))
if number > 0:
    print("正數")
elif number < 0:
    print("負數")
else:
    print("0")

解析:先輸入,再判斷不同情況,是很常見的寫法。

第 5 題

參考答案:登入程式可以用條件判斷檢查帳號是否正確、密碼是否正確、是否登入成功。

解析:這題重點不是唯一答案,而是理解條件判斷在真實系統裡很常用。

小結

這一章你已經學會了條件判斷的基本觀念。

你現在知道: - if 用來處理「如果成立就執行」 - else 用來處理「其他情況」 - elif 用來處理多種不同條件 - 條件判斷常常搭配比較運算子一起使用 - Python 的縮排不能亂寫

接下來學迴圈時,你會進一步看到程式如何重複執行同一段工作。

第 6 章 迴圈

本章重點

概念說明

在寫程式時,我們常常會遇到一種情況:同一件事要做好幾次。

例如: - 印出 1 到 10 - 重複顯示歡迎訊息 5 次 - 讓使用者一直輸入,直到輸入正確內容為止

如果每次都手動寫很多行 print(),不但麻煩,也很容易出錯。

這時候就需要用到迴圈

迴圈的意思很簡單,就是讓一段程式重複執行。 你可以把它想成:「請這段程式再做一次、再做一次,直到符合停止條件為止。」

在 Python 裡,初學者最常接觸到兩種迴圈:

這一章會帶你一步一步認識這兩種寫法。

迴圈會把同一段工作重複執行多次

範例程式

範例 1:使用 for 印出 0 到 4

for i in range(5):
    print(i)

範例 2:使用 for 重複顯示訊息

for i in range(3):
    print("歡迎學習 Python")

範例 3:使用 while 印出 1 到 5

count = 1

while count <= 5:
    print(count)
    count = count + 1

範例 4:倒數計時

number = 5

while number > 0:
    print(number)
    number = number - 1

print("時間到!")

程式解說

1. for 迴圈的基本概念

如果你已經知道某段程式要重複幾次,for 會很好用。

先看這段:

for i in range(5):
    print(i)

這裡的意思是: - range(5) 會產生 0、1、2、3、4 - 每次執行迴圈時,i 會依序拿到其中一個值 - 然後把 i 印出來

所以最後畫面上會看到:

0
1
2
3
4

2. range() 的用法

range()for 迴圈裡非常常見。

例如: - range(5) 代表 0 到 4 - range(1, 6) 代表 1 到 5

很多初學者會以為 range(5) 會包含 5,但其實不會包含最後那個數字

例如:

for i in range(1, 6):
    print(i)

這樣才會印出 1 到 5。

3. while 迴圈的基本概念

如果你不知道程式要重複幾次,而是要看某個條件是否成立,就可以用 while

例如:

count = 1

while count <= 5:
    print(count)
    count = count + 1

這段程式的意思是: - 只要 count <= 5 成立,就持續執行 - 每次執行完後,把 count 加 1 - 當 count 變成 6 時,條件不成立,迴圈就停止

4. 為什麼要更新變數

while 迴圈裡,很重要的一件事就是:條件中的變數要改變

如果你忘記更新,程式就可能永遠不會停下來,這種情況叫做無限迴圈

例如下面這種寫法就有問題:

count = 1

while count <= 5:
    print(count)

因為 count 一直都是 1,條件永遠成立,所以程式會一直重複下去。

常見錯誤

1. 不清楚 range() 的範圍

初學者很常把 range(5) 誤解成 1 到 5。

其實它是從 0 開始,所以結果會是 0、1、2、3、4。

2. 忘記更新 while 內的變數

這是最常見的錯誤之一。

如果條件永遠成立,程式就會一直跑下去,不會自動停止。

3. 縮排不正確

forwhile 底下要重複執行的程式,一定要有正確縮排。

例如:

for i in range(3):
    print(i)

如果 print(i) 沒有縮排,就不會屬於迴圈的一部分。

練習題

  1. 使用 for 迴圈印出 1 到 10。
  2. 使用 for 迴圈重複輸出「我正在學 Python」5 次。
  3. 使用 while 迴圈印出 1 到 5。
  4. 寫一個倒數程式,從 10 倒數到 1,最後印出「結束」。
  5. 想一想:什麼情況比較適合用 for?什麼情況比較適合用 while

練習題參考解答與解析

第 1 題

for i in range(1, 11):
    print(i)

解析:要印出 1 到 10,可以用 range(1, 11)

第 2 題

for i in range(5):
    print("我正在學 Python")

解析:這題重點是固定次數重複,適合用 for

第 3 題

count = 1
while count <= 5:
    print(count)
    count = count + 1

解析:使用 while 時別忘了更新變數,不然會變成無限迴圈。

第 4 題

number = 10
while number >= 1:
    print(number)
    number = number - 1
print("結束")

解析:這題是 while 的經典練習,條件不成立時就會停止。

第 5 題

參考答案: - 已知重複次數時,比較適合用 for - 要依條件決定重複多久時,比較適合用 while

解析:這是兩種迴圈最重要的差別。

小結

這一章你已經學會 Python 中兩種重要的迴圈。

你現在知道: - 迴圈可以讓程式重複執行工作 - for 適合用在已知次數的重複 - while 適合用在看條件是否成立的重複 - 使用 while 時要特別注意變數更新 - range() 不會包含最後一個數字

學會迴圈之後,你的程式就能更有效率地處理重複任務。

接下來的清單章節,你會學到怎麼把很多筆相關資料放在一起管理,讓迴圈能更方便地一次處理多個內容。

第 7 章 清單

本章重點

概念說明

在前面的章節裡,我們常常把一筆資料存進一個變數,例如名字、年齡或分數。

但是如果今天不是只有一筆資料,而是很多筆同類型的資料呢?

例如: - 三種水果名稱 - 五位同學的分數 - 一週七天的名字

如果每一筆資料都開一個變數,會變得很麻煩,也不好管理。

這時候就可以使用 清單(List)

清單可以把多筆資料放在同一個變數裡,而且資料會按照順序排好。你可以把它想成一個有順序的清單,裡面一格一格放著不同內容。

在 Python 中,List 會用中括號 [] 來表示,元素之間用逗號隔開。

清單中的元素會依照順序排列,而且索引從 0 開始

範例程式

範例 1:建立清單並讀取元素

fruits = ["apple", "banana", "orange"]
print(fruits[0])
print(fruits[1])

範例 2:修改清單中的資料

colors = ["red", "blue", "green"]
colors[1] = "yellow"

print(colors)

範例 3:加入新元素

numbers = [10, 20, 30]
numbers.append(40)

print(numbers)

範例 4:刪除元素

fruits = ["apple", "banana", "orange"]
fruits.remove("banana")

print(fruits)

範例 5:查看清單長度

students = ["小明", "小美", "阿華"]
print(len(students))

範例 6:搭配迴圈逐一顯示

names = ["小明", "小美", "阿華"]

for name in names:
    print(name)

程式解說

1. 如何建立清單

建立清單很簡單,只要把資料放在中括號裡面即可。

fruits = ["apple", "banana", "orange"]

這表示 fruits 裡面有三個元素,分別是 applebananaorange

2. 什麼是索引

清單裡的每一個元素,都有自己的位置。 這個位置叫做索引

在 Python 中,索引是從 0 開始算的,不是從 1 開始。

所以: - fruits[0] 是第一個元素 - fruits[1] 是第二個元素 - fruits[2] 是第三個元素

這是初學者很容易搞混的地方,一定要特別記住。

3. 修改元素內容

清單裡的資料是可以改的。

例如:

colors = ["red", "blue", "green"]
colors[1] = "yellow"

這表示把原本第二個元素 blue 改成 yellow

修改之後,整個清單就會變成:

["red", "yellow", "green"]

4. 加入新資料

如果你想在清單最後面加入一個新元素,可以使用 append()

numbers = [10, 20, 30]
numbers.append(40)

這樣 40 就會被加到最後面。

5. 刪除資料

如果你想刪除清單中的某個元素,可以使用 remove()

fruits = ["apple", "banana", "orange"]
fruits.remove("banana")

這樣 banana 就會從清單中被移除。

6. 查看清單長度

如果你想知道清單裡有幾筆資料,可以使用 len()

students = ["小明", "小美", "阿華"]
print(len(students))

這裡的 len(students) 會告訴你清單裡總共有幾個元素。

7. 用迴圈讀取整個清單

當清單裡有很多資料時,一個一個手動寫出來很不方便。

所以我們通常會搭配 for 迴圈,把清單裡的每個元素依序取出來。

for name in names:
    print(name)

這段程式會把 names 裡的每個名字都印出來。

這種寫法很常見,之後你會經常使用。

常見錯誤

1. 忘記索引從 0 開始

很多初學者看到第一個元素時,會直覺寫成 fruits[1]

但在 Python 裡,第一個元素應該是 fruits[0]

2. 索引超出範圍

如果清單只有三個元素,你卻去讀 fruits[5],程式就會報錯。

所以在讀取資料前,要先知道清單裡到底有幾個元素。

3. 把 append 寫錯

加入新元素時要寫成:

numbers.append(40)

不要漏掉括號,也不要把方法名稱拼錯。

4. 刪除不存在的資料

如果你要刪除的內容根本不在清單裡,程式就會出錯。

例如清單裡沒有 grape,卻寫:

fruits.remove("grape")

這樣 Python 就找不到要刪除的資料。

練習題

  1. 建立一個包含三種飲料名稱的清單,並印出第一個元素。
  2. 建立一個數字清單,修改其中一個數字後再印出整個清單。
  3. 建立一個空清單,接著用 append() 加入三個資料。
  4. 建立一個水果清單,刪除其中一個水果後再印出。
  5. 建立一個名字清單,先印出清單長度,再使用 for 迴圈把每個名字印出來。
  6. 想一想:如果要管理全班同學的名字,為什麼用清單會比一個一個變數方便?

練習題參考解答與解析

第 1 題

drinks = ["tea", "coffee", "juice"]
print(drinks[0])

解析:第一個元素的索引是 0,不是 1。

第 2 題

numbers = [10, 20, 30]
numbers[1] = 99
print(numbers)

解析:用索引可以直接修改清單中的資料。

第 3 題

items = []
items.append("apple")
items.append("banana")
items.append("orange")
print(items)

解析:空清單也可以慢慢加入資料。

第 4 題

fruits = ["apple", "banana", "orange"]
fruits.remove("banana")
print(fruits)

解析:remove() 可以刪除指定內容。

第 5 題

names = ["小明", "小美", "阿華"]
print(len(names))
for name in names:
    print(name)

解析:len() 可以先看有幾筆資料,for 迴圈則可以把每個元素依序取出來。

第 6 題

參考答案:因為清單可以把多個同類資料放在一起,比一個一個變數更好整理,也更方便重複處理。

解析:這就是清單最主要的用途。

小結

這一章你已經學會了清單的基本概念。

你現在知道: - 清單可以一次存放多筆資料 - 清單中的元素有順序,也有索引 - Python 的索引從 0 開始 - 可以修改元素,也可以用 append() 加入資料 - 可以用 remove() 刪除資料 - 可以用 len() 查看有幾筆資料 - 清單常常會搭配 for 迴圈一起使用

學會清單之後,你就更能有效管理多筆相關資料。

第 8 章 字典

本章重點

概念說明

前一章我們學到清單,知道它適合拿來存放一組有順序的資料。

但是有些資料,不只是單純排成一列,而是每一筆資料都有「欄位名稱」。

例如一位學生的資料可能有: - 姓名 - 年齡 - 分數

如果只用清單來放,就必須一直記住第 0 個是名字、第 1 個是年齡、第 2 個是分數。這樣雖然也做得到,但不夠直覺。

這時候就很適合用 字典(Dictionary)

字典的特色是: 每一筆資料都有一個名稱,透過這個名稱去找到對應的值。

在字典裡: - 名稱叫做 ,英文是 key - 對應的內容叫做 ,英文是 value

你可以把它想成查字典: 輸入一個字,就能找到對應的解釋。

在 Python 中,Dictionary 會使用大括號 {},裡面放「鍵: 值」的組合。

字典中的鍵會對應到不同的值

範例程式

範例 1:建立字典

student = {
    "name": "Amy",
    "age": 18,
    "score": 95
}

print(student)

範例 2:讀取指定資料

student = {
    "name": "Amy",
    "age": 18
}

print(student["name"])
print(student["age"])

範例 3:修改與新增資料

student = {
    "name": "Amy",
    "age": 18
}

student["age"] = 19
student["city"] = "Taipei"

print(student)

範例 4:讀取多筆指定資料

product = {
    "name": "Notebook",
    "price": 35,
    "stock": 20
}

print(product["name"])
print(product["price"])

範例 5:逐一查看字典內容

product = {
    "name": "Notebook",
    "price": 35,
    "stock": 20
}

for key in product:
    print(key, ":", product[key])

程式解說

1. 字典的基本結構

先看這段:

student = {
    "name": "Amy",
    "age": 18,
    "score": 95
}

這裡的 student 是一個字典。 裡面有三組資料:

這就是鍵和值的關係。

2. 如何讀取資料

如果你想取出某一筆資料,可以用:

student["name"]

這表示:到 student 這本字典裡,找鍵是 name 的資料。

如果這筆資料存在,就能拿到對應的值。

3. 如何修改資料

字典的值是可以更新的。

例如:

student["age"] = 19

這行程式會把原本的年齡改成 19。

4. 如何新增資料

如果這個鍵原本不存在,Python 會幫你新增一筆資料。

例如:

student["city"] = "Taipei"

這樣字典裡就會多出一個 city

所以同樣的寫法,既可以修改,也可以新增,差別在於那個鍵原本有沒有存在。

5. 讀取多筆資料

如果你已經知道想看的鍵,也可以一筆一筆把資料印出來。

例如:

product = {
    "name": "Notebook",
    "price": 35,
    "stock": 20
}

print(product["name"])
print(product["price"])

這樣的寫法很適合剛開始學字典時,先熟悉怎麼透過鍵找到值。

6. 逐一查看字典內容

如果你想一次看完整個字典,也可以搭配 for 迴圈,把每個鍵依序取出來。

for key in product:
    print(key, ":", product[key])

這裡的 key 會依序變成 namepricestock,所以最後可以把整份資料一項一項印出來。

7. 和清單有什麼不同

這是很重要的觀念:

如果資料很適合用欄位名稱表示,通常字典會更清楚。

常見錯誤

1. 讀取不存在的鍵

例如:

student = {"name": "Amy"}
print(student["score"])

這裡會出錯,因為 score 這個鍵並不存在。

2. 忘記鍵要用正確格式

通常字串型態的鍵要加引號,例如:

student["name"]

如果少了引號,Python 可能會把它當成變數來看,造成錯誤。

3. 把大括號和中括號弄混

這兩種符號用途不同,不能混用。

練習題

  1. 建立一個 book 字典,裡面放書名、作者與頁數。
  2. 讀取你建立的字典中其中一筆資料並印出。
  3. 修改其中一個值,例如把頁數改大一點。
  4. 再新增一個欄位,例如出版社或價格。
  5. 想一想:學生資料、商品資料、天氣資料,哪些情況適合用字典?為什麼?

練習題參考解答與解析

第 1 題

book = {
    "title": "Python 入門",
    "author": "J5",
    "pages": 200
}
print(book)

解析:字典用大括號建立,裡面放鍵和值。

第 2 題

print(book["title"])

解析:想取出某一筆資料時,要用對應的鍵去讀取。

第 3 題

book["pages"] = 220
print(book)

解析:如果鍵已存在,指定新值就是修改資料。

第 4 題

book["publisher"] = "Happy Ebook 出版"
print(book)

解析:如果鍵原本不存在,這樣寫就會新增一筆資料。

第 5 題

參考答案:學生資料、商品資料、天氣資料都很適合用字典,因為它們都有清楚的欄位名稱,例如姓名、價格、溫度。

解析:只要資料適合用名稱管理,就很適合用字典。

小結

這一章你已經學會字典的基本操作。

你現在知道: - 字典是由鍵和值組成 - 可以透過鍵快速找到對應資料 - 可以新增、修改與讀取內容 - 它很適合表示有欄位名稱的資料 - 和清單相比,字典更適合用「名稱」管理資訊

學會字典之後,你處理資料的方式會更有條理。

第 9 章 字串

本章重點

概念說明

在 Python 裡,除了數字以外,另一種非常常見的資料型態就是字串

字串就是文字資料。 例如: - 姓名 - 地址 - 問候語 - 一段句子

只要是文字內容,通常都會用字串來表示。

在 Python 中,字串要放在引號裡面,可以使用單引號 ' ',也可以使用雙引號 " "

例如:

name = "Amy"
message = 'Hello'

這兩種寫法都可以,只要前後成對就沒問題。

字串在程式裡非常重要,因為很多和人互動的內容都和文字有關,例如輸入名字、顯示提示訊息、處理句子內容等等。

同一段字串可以用不同方式處理,例如轉大寫、改標題格式、計算長度

範例程式

範例 1:建立與輸出字串

name = "Python"
print(name)
print("歡迎學習 Python")

範例 2:字串串接

first_name = "王"
last_name = "小明"
full_name = first_name + last_name

print(full_name)

範例 3:字串重複

line = "=" * 10
print(line)

範例 4:常見字串功能

text = "python programming"

print(text.upper())
print(text.title())
print(len(text))

程式解說

1. 字串要放在引號裡

如果你想在程式中表示一段文字,就必須把它放進引號。

例如:

print("你好")

這樣 Python 才知道你要處理的是文字,而不是變數名稱。

2. 字串可以串接

字串和字串之間可以用 + 接起來。

例如:

first_name = "王"
last_name = "小明"
full_name = first_name + last_name

這樣就會把兩段文字合成一段新的文字。

如果你想中間多一個空格,也可以自己加上去:

english_name = "Amy" + " " + "Chen"

3. 字串也可以重複

除了串接,字串還可以和數字搭配使用 *

print("Hi" * 3)

結果會是:

HiHiHi

這種寫法有時候可以拿來做分隔線或簡單排版。

4. 常見字串功能

Python 提供很多方便的字串功能,這裡先介紹幾個初學者常用的:

例如:

text = "python programming"
print(text.upper())

這樣會輸出:

PYTHON PROGRAMMING

上面這些像 upper()lower()title(),都是字串常用的方法。

如果你想知道字串長度,可以使用 len()

print(len(text))

這裡的 len() 是 Python 提供的函式,不是字串方法。 它會告訴你這段文字總共有幾個字元。

常見錯誤

1. 把字串和數字直接相加

這是很常見的初學者錯誤。

例如:

age = 18
print("我的年齡是" + age)

這樣會出錯,因為前面是字串,後面是整數。

比較簡單的寫法是:

age = 18
print("我的年齡是", age)

2. 引號沒有成對

例如少打一個引號,Python 就會報語法錯誤。

錯誤示意:

print("Hello)

3. 把方法名稱拼錯

upper()lower() 這些方法,如果拼錯,程式就不會成功執行。

所以打字時要特別注意大小寫與拼字。

4. 把 len() 當成字串方法

len() 要寫成 len(text),不能寫成 text.len()

因為 len() 是函式,不是字串方法。

練習題

  1. 建立一個字串變數,存放你的名字,然後印出來。
  2. 建立兩個字串,分別是姓氏和名字,將它們串接後輸出。
  3. * 產生一條由 - 組成的分隔線。
  4. 建立一段英文文字,試著使用 upper()lower()title()
  5. 使用 len() 計算一句話的長度。

練習題參考解答與解析

第 1 題

name = "J5"
print(name)

解析:字串要放在引號裡,這樣 Python 才知道它是文字。

第 2 題

last_name = "王"
first_name = "小明"
full_name = last_name + first_name
print(full_name)

解析:字串可以用 + 串接成一段完整內容。

第 3 題

print("-" * 20)

解析:字串乘上數字可以重複顯示多次。

第 4 題

text = "python book"
print(text.upper())
print(text.lower())
print(text.title())

解析:這三個方法分別能改變字母大小寫的呈現方式。

第 5 題

sentence = "Hello Python"
print(len(sentence))

解析:len() 會回傳字串長度,也包含空格在內。

小結

這一章你已經學會字串的基本操作。

你現在知道: - 字串是用來表示文字資料的型態 - 文字要放在引號裡 - 可以用 + 進行字串串接 - 可以用 * 做重複輸出 - 可以使用 upper()lower()title() 等字串方法 - 可以使用 len() 這個函式計算字串長度

字串是程式設計中非常常用的資料型態,學熟之後會幫助你更自然地處理各種文字內容。

第 10 章 函式

本章重點

概念說明

寫程式時,常常會遇到某些工作要重複做好幾次。

例如: - 一直重複顯示歡迎訊息 - 多次計算兩個數字的總和 - 依照不同名字顯示不同問候語

如果每次都把相同的程式碼再寫一遍,不但麻煩,也很難維護。

這時候就可以使用 函式(Function)

函式可以把一段有特定用途的程式整理起來,等到需要的時候再呼叫使用。

你可以把函式想成一台小機器: - 給它資料 - 它幫你做事 - 再把結果顯示出來或回傳回來

函式的好處很多: - 減少重複程式碼 - 讓程式更清楚 - 方便修改與重複使用

這也是你在本書中學到的一個很重要的整理能力。

函式可以像小機器一樣接收資料、處理資料,再回傳結果

範例程式

範例 1:最基本的函式

def say_hello():
    print("歡迎來學 Python")

say_hello()

範例 2:有參數的函式

def say_hello(name):
    print("你好," + name)

say_hello("Amy")
say_hello("Jack")

範例 3:回傳結果的函式

def add_numbers(x, y):
    result = x + y
    return result

total = add_numbers(10, 5)
print(total)

範例 4:搭配輸入使用

def print_user_name(name):
    print("你的名字是:" + name)

user_name = input("請輸入名字:")
print_user_name(user_name)

程式解說

1. 如何定義函式

在 Python 中,定義函式要使用 def

例如:

def say_hello():
    print("歡迎來學 Python")

這裡的意思是: - def 表示要定義一個函式 - say_hello 是函式名稱 - 後面的括號 () 是函式格式的一部分 - 冒號 : 後面接的是函式要做的事

注意,函式內的程式碼要記得縮排。

2. 定義後還要呼叫

這是非常重要的一點。

很多初學者以為函式定義完就會自動執行,其實不會。

你必須主動呼叫它:

say_hello()

這樣程式才會真的去執行函式裡面的內容。

3. 什麼是參數

有時候同一個函式想處理不同資料,就可以使用參數

例如:

def say_hello(name):
    print("你好," + name)

這裡的 name 就是參數。

它的意思是: 「當別人呼叫這個函式時,可以順便給我一個名字,我就用這個名字來打招呼。」

所以:

say_hello("Amy")
say_hello("Jack")

雖然呼叫的是同一個函式,但會得到不同結果。

4. 什麼是回傳值

有些函式不是只做一件事然後印出來,而是會把結果送回去,讓外面繼續使用。

這時就會用到 return

例如:

def add_numbers(x, y):
    result = x + y
    return result

這個函式會把兩個數字相加,再把答案回傳出去。

外面就可以這樣接住它:

total = add_numbers(10, 5)
print(total)

這樣做的好處是,計算結果可以繼續拿來做別的事情,而不只是當場印出來。

常見錯誤

1. 定義函式後忘記呼叫

例如:

def say_hello():
    print("你好")

這樣只是在「定義」函式,還沒有真正執行。

如果你想看到結果,還要再加上:

say_hello()

2. 參數數量不一致

如果函式定義時需要一個參數,呼叫時就要提供一個資料。

例如:

def say_hello(name):
    print("你好," + name)

如果你直接寫:

say_hello()

就會出錯,因為少給了 name

3. 縮排不正確

函式裡面的內容一定要縮排,不然 Python 會不知道哪些程式碼屬於函式本體。

練習題

  1. 寫一個 say_hi() 函式,呼叫後印出一句問候語。
  2. 寫一個 show_name(name) 函式,能接收名字並顯示歡迎訊息。
  3. 寫一個 add_numbers(a, b) 函式,回傳兩數相加的結果。
  4. 寫一個 is_adult(age) 函式,當年齡大於等於 18 時印出「成年」,否則印出「未成年」。
  5. 想一想:如果同樣的程式碼會重複出現很多次,為什麼用函式會比較好?

練習題參考解答與解析

第 1 題

def say_hi():
    print("嗨,歡迎你")

say_hi()

解析:先用 def 定義函式,再主動呼叫它。

第 2 題

def show_name(name):
    print("歡迎你," + name)

show_name("Amy")

解析:參數可以讓同一個函式處理不同資料。

第 3 題

def add_numbers(a, b):
    return a + b

print(add_numbers(3, 5))

解析:如果希望把結果交回外面使用,就可以用 return

第 4 題

def is_adult(age):
    if age >= 18:
        print("成年")
    else:
        print("未成年")

is_adult(20)

解析:這題把函式和條件判斷結合在一起,是很好的總複習。

第 5 題

參考答案:因為函式可以減少重複程式碼,讓程式更整齊,也更容易修改和重複利用。

解析:這就是函式在程式設計中很重要的原因。

小結

這一章是本書的重要收尾,因為你已經學到如何把程式整理得更有結構。

你現在知道: - 函式可以把一段功能包起來重複使用 - def 用來定義函式 - 函式定義後還需要呼叫 - 參數可以讓函式更有彈性 - return 可以把結果傳回去

到這裡,你已經完成從 Python 基礎到函式的核心入門內容。