Python 程式設計入門

第四章 - 資訊科技核心D:計算思維與編程

章節內容

探索Python程式設計的四個主要部分

4.1 程式開發

從偽代碼到Python、IDE設置和Hello World

4.2 基本程式概念

變數、數據類型、運算符、輸入輸出和函數

4.3 選擇

條件語句、布爾邏輯和決策

4.4 迭代

for循環、while循環和重複控制

核心概念

4.1 程式開發

從偽代碼到程式語言

Python、C++和Java等程式語言讓我們能與電腦溝通。每種語言都有其獨特特性,但Python以其簡潔性和易用性著稱。

Python IDE - Thonny

整合開發環境(IDE)是一個具有代碼編輯器和程式設計相關功能的應用程式。建議初學者使用Thonny(版本3.3.10或更高)。

Hello World 程式

最簡單的Python程式,用於熟悉該語言:

Python
print("Hello World!")

在Python中,print()字面意思是「輸出」。引號內的文字會原樣顯示。

4.2 基本程式概念

變數與數據類型

變數是記憶體中的命名儲存位置。Python有四種常見的數據類型:

  • 整數(int):整數(例如:288、-101)
  • 浮點數(float):帶小數的數字(例如:56.5、-30.0)
  • 布爾值(bool):True或False值
  • 字串(str):字符序列(例如:'abc'、'Password123')

類型轉換

內建函數可以改變數據類型:

  • int():轉換為整數(浮點數會向下取整)
  • float():轉換為浮點數
  • str():轉換為字串

算術運算符

運算符
+    加法
-    減法
*    乘法
/    除法(返回浮點數)
//   整數除法(商)
%    取模(餘數)
**   指數

複合賦值運算符

常見操作的簡寫:

y += 2  # 等同於:y = y + 2
y -= 3  # 等同於:y = y - 3
y *= 4  # 等同於:y = y * 4
y /= 5  # 等同於:y = y / 5

輸入與輸出

print()顯示輸出,input()接收用戶輸入(總是返回字串):

name = input("Please enter your name: ")
print("Hi", name)

內建函數

  • abs(x):返回絕對值
  • round(x, y):將x四捨五入到y位小數

數學函數庫

導入math函數庫以訪問高級函數:

import math
y = math.sqrt(16)  # 平方根:4.0
y = math.sin(x)    # 正弦(x為弧度)
y = math.cos(x)    # 餘弦
y = math.exp(10)   # 自然指數(e^10)

隨機函數庫

import random
y = random.random()        # 隨機浮點數:0 <= y < 1
y = random.uniform(1, 10)  # 隨機浮點數:1 <= y < 10
y = random.randint(1, 10)  # 隨機整數:1 <= y <= 10
4.3 選擇

關係運算符

用於比較值並返回True或False:

==   等於
!=   不等於
<    小於
<=   小於或等於
>    大於
>=   大於或等於

條件語句

if、elif和else根據條件控制程式流程:

if...elif...else
score = int(input("Enter your score: "))

if score >= 90:
    print("Grade: A")
elif score >= 80:
    print("Grade: B")
elif score >= 70:
    print("Grade: C")
elif score >= 60:
    print("Grade: D")
else:
    print("Grade: F")

布爾運算符

  • and:兩個條件都必須為True
  • or:至少一個條件必須為True
  • not:反轉布爾值
age = 25
if age >= 18 and age < 65:
    print("Working age")

嵌套條件

條件可以嵌套在其他條件內以實現複雜邏輯:

if temperature > 30:
    if humidity > 80:
        print("Hot and humid")
    else:
        print("Hot and dry")
4.4 迭代

使用range()的for循環

重複執行代碼指定次數:

for循環示例
# 打印1到5
for i in range(1, 6):
    print(i)

# range(起始, 結束, 步長)
for i in range(2, 10, 3):
    print(i)  # 輸出:2, 5, 8

while循環

當條件為True時重複執行代碼:

while循環示例
x = 5
while x > 0:
    print(x)
    x -= 2
# 輸出:5, 3, 1

for與while循環比較

  • for:當迭代次數已知時使用
  • while:當基於條件重複時使用

後測循環模擬

Python沒有內建的do-while循環,但我們可以模擬:

while True:
    password = input("Enter password: ")
    if password == "secret":
        break
print("Access granted")

程式碼示例

實用的Python程式碼演示

Hello World 程式
Python
print("Hello World!")
變數與類型轉換
Python
length = 12
print(length)
print(type(length))  # <class 'int'>

length = 12.0
print(length)
print(type(length))  # <class 'float'>

length = "The length is twelve"
print(length)
print(type(length))  # <class 'str'>
算術運算
Python
a = 12
b = a + 10
c = b % 10
d = b**c
print(a/b)
print(type(a/b))  # <class 'float'>
輸入輸出與格式化
Python
name = "David"
mark = 89
print("Hi", name, "your mark is", mark)
# 輸出:Hi David your mark is 89

print("Print something \*special\*")
# 輸出:Print something *special*
成績分類(if/elif/else)
Python
score = int(input("Enter your score: "))

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"

print("Your grade is:", grade)
使用for循環求和
Python
# 計算1到10的總和
total = 0
for i in range(1, 11):
    total += i
print("Sum:", total)  # 輸出:Sum: 55
使用while循環驗證輸入
Python
password = ""
while password != "secret":
    password = input("Enter password: ")
    if password != "secret":
        print("Incorrect password. Try again.")

print("Access granted!")

比較分析

關鍵比較與重要區別

偽代碼與Python語法

偽代碼 Python 註釋
variable ← expression variable = expression 賦值使用=
Output message print(message) print()函數
Input variable variable = input() input()總是返回字串
if condition then if condition: 需要冒號,主體需縮排
for i ← 1 to 10 for i in range(1, 11): range(1, 11)表示1到10
while condition while condition: 需要冒號和縮排

關係運算符比較

操作 偽代碼 Python
等於 = ==
不等於 !=
大於 > >
小於 < <
大於或等於 >=
小於或等於 <=

算術運算符

操作 偽代碼 Python 示例
加法 + + y = 1 + 2
減法 - - y = 5 - 2
乘法 × or * * y = 2 * 3
除法 / or ÷ / y = 10 / 3 → 3.33333
整數除法 DIV // y = 10 // 3 → 3
取模 MOD % y = 10 % 3 → 1
指數 ^ ** y = 2 ** 3 → 8

for循環與while循環

方面 for 循環 while 循環
何時使用 迭代次數已知 基於條件重複
語法 for i in range(1, 11): while x > 0:
示例 打印1到10 輸入驗證
計數變數 自動(i) 需手動更新

常見錯誤與調試技巧

重要區別
# 1. 賦值(=)與比較(==)
x = 5      # 將5賦值給x
x == 5     # 檢查x是否等於5(返回True/False)

# 2. 縮排在Python中至關重要
if x > 0:
    print("Positive")  # 必須縮排

# 3. input()返回字串
age = input("Enter age: ")  # age是字串!
age = int(input("Enter age: "))  # 轉換為整數

# 4. 除法運算符
10 / 3   # 返回3.33333(浮點數)
10 // 3  # 返回3(整數商)
10 % 3   # 返回1(餘數)

互動測驗

通過12道題測試你的Python知識

問題 1
當name = 'Billy'時,print('name')的輸出是什麼?
A. name
B. Billy
C. 'name'
D. 錯誤
問題 2
input()返回什麼數據類型?
A. str(字串)
B. int(整數)
C. float(浮點數)
D. bool(布爾值)
問題 3
在Python中10 // 3的結果是什麼?
A. 3
B. 3.33333
C. 1
D. 錯誤
問題 4
在Python中10 % 3的結果是什麼?
A. 1
B. 3
C. 3.33333
D. 0
問題 5
哪個運算符用於比較(而非賦值)?
A. ==
B. =
C. !=
D. <=
問題 6
以下代碼的輸出是什麼:for i in range(1,4): print(i)?
A. 1 2 3
B. 1 2 3 4
C. 0 1 2 3
D. 2 3 4
問題 7
int(12.9)返回什麼?
A. 12
B. 13
C. 12.9
D. 錯誤
問題 8
以下哪個是if語句的正確Python語法?
A. if x > 5:
B. if (x > 5)
C. if x > 5 then
D. if x > 5 {
問題 9
range(2, 10, 3)生成什麼?
A. 2, 5, 8
B. 2, 3, 4, 5, 6, 7, 8, 9
C. 3, 6, 9
D. 2, 5, 8, 11
問題 10
Python中elif的用途是什麼?
A. Else if - 當前一個條件為假時檢查另一個條件
B. 結束if語句
C. 創建循環
D. 定義函數
問題 11
'import random'的作用是什麼?
A. 導入random函數庫用於生成隨機數
B. 創建隨機變數
C. 生成隨機數
D. 打亂列表
問題 12
以下代碼的輸出是什麼:x=5; while x>0: print(x); x-=2?
A. 5 3 1
B. 5 4 3 2 1
C. 5 3 1 -1
D. 無限循環

閃卡

點擊卡片翻轉並複習關鍵概念

變數
記憶體中用於存儲值的命名位置
數據類型
定義數據的種類(int、float、bool、str)
整數(int)
正數或負數的整數(例如:288、-101)
浮點數
帶小數點的數字(例如:56.5、-30.0)
布爾值(bool)
用於邏輯的True或False值
字串(str)
字符序列(例如:'abc'、'Password123')
常數
具有固定值的變數(例如:PI = 3.14159)
類型轉換
使用int()、float()、str()在數據類型之間轉換
算術運算符
數學運算的符號:+、-、*、/、//、%、**
賦值運算符
=符號,將值放入變數
關係運算符
比較兩個值:==、!=、<、<=、>、>=
布爾運算符
邏輯運算符:and、or、not
整合開發環境
整合開發環境 - 用於編寫代碼的應用程式(例如:Thonny)
函數庫
預先構建的函數集合(例如:math、random)
縮排
顯示Python中代碼結構和塊的空格
選擇
使用if/elif/else在程式中做出決策
迭代
使用循環(for、while)重複執行代碼
for 循環
使用range()的帶計數器變數的循環
while 循環
基於條件為True而重複的循環
嵌套結構
在另一個結構內的結構(循環或條件)
偽代碼
編碼前的人類可讀算法描述
語法
在程式語言中編寫有效代碼的規則
註解
程式忽略的文字,在Python中用#標記
循環體
循環內重複執行的縮排語句

練習題

通過編程練習應用你的知識

練習1:矩形面積計算器

編寫一個Python程式來計算矩形的面積。給定長度=20,寬度=15,計算並打印面積。

參考答案

length = 20
width = 15
area = length * width
print(area)  # 輸出:300

解釋:將長度乘以寬度得到面積。結果為300平方單位。

練習2:時間轉換器

編寫一個Python程式將秒轉換為分鐘和秒。例如,輸入125秒應輸出「2分鐘5秒」。

參考答案

total_seconds = 125
minutes = total_seconds // 60
seconds = total_seconds % 60
print(minutes, "minute(s) and", seconds, "second(s)")
# 輸出:2 minute(s) and 5 second(s)

解釋:使用//進行整數除法得到分鐘數,使用%得到餘數(秒數)。

練習3:BMI健康狀態

編寫一個Python程式來判斷BMI健康狀態。計算BMI = 體重 / (身高^2),然後分類:BMI < 18.5(過輕)、18.5 <= BMI < 24(正常)、24 <= BMI < 27(過重)、BMI >= 27(肥胖)。

參考答案

height = float(input("Enter your height in meters: "))
weight = float(input("Enter your weight in kg: "))
bmi = weight / (height ** 2)

if bmi < 18.5:
    status = "Underweight"
elif bmi < 24:
    status = "Normal"
elif bmi < 27:
    status = "Overweight"
else:
    status = "Obese"

print("Your BMI is", round(bmi, 2))
print("Status:", status)

解釋:使用elif處理多個條件。**運算符計算身高的平方。round()將BMI顯示為2位小數。

練習4:使用Sigma符號求和

編寫一個Python程式計算總和:Σ(i) 從i=1到100(1到100的數字總和)。

參考答案

total = 0
for i in range(1, 101):
    total += i
print("Sum from 1 to 100:", total)
# 輸出:Sum from 1 to 100: 5050

解釋:將total初始化為0,然後使用range(1, 101)的for循環將1到100的每個數字相加。+=運算符累加到總和。

練習5:抽獎程式

編寫一個Python抽獎程式。使用random.randint(1, 100)生成1到100之間的隨機整數,如果數字大於90則打印「恭喜!你中獎了!」,否則打印「下次好運!」。

參考答案

import random

lucky_number = random.randint(1, 100)
print("Your lucky number is:", lucky_number)

if lucky_number > 90:
    print("Congratulations! You won!")
else:
    print("Better luck next time!")

解釋:首先導入random函數庫。random.randint(1, 100)生成1到100(包含)的隨機整數。使用if語句檢查數字是否大於90。

由以下製作