Python程式設計
Lesson 2: 認識變數 基本數學運算 與 資料型別
last updated: 2022/3/11
學習目標-Part 1
- 使用VS Code開發python程式
- Python程式碼註解方式
- Python變數: 命名與使用
工具介紹
VS Code
VS Code安裝與中文化(1/5)
❶中文化
開啟VSCode後,前往下列網址,點選Install
https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-zh-hant
❷切換中文語系
照這篇 https://oranwind.org/vs-code-lang/ 可以切換語系
VS Code 安裝Python模組(2/5)

開啟VS Code,點選下列Python模組連結
VS Code 界面簡介(3/5)
❶ 開啟專案
檔案總管

❷ 儲存工作區

延伸模組
VS Code 選擇直譯器(4/5)


VS Code 執行Python程式(5/5)


編輯器中按滑鼠右鍵
終端機: 出現執行結果
# coding: utf-8
name = input('姓名?')
print('妳好,', name)
name = 100
print(name)
工具介紹
jupyter notebook
Jupyter Notebook安裝與執行

直接執行
Anaconda安裝好後, 開啟Navigator即可執行
Jupyter Notebook執行

Jupyter Notebook: 在瀏覽器內執行Python程式
❸ 進入互動模式
❶
❷

Jupyter Notebook執行

❶ 檔案名稱
❷ 編輯單元(cell)
❸ 選單與工具列
Python程式在此輸入執行
副檔名為.ipynb
Jupyter Notebook執行


綠色: 編輯模式
藍色: 命令模式(執行...)
快捷鍵(Windows) | 作用 |
---|---|
Enter | 進入編輯模式 |
Esc | 進入命令模式 |
Ctrl-Enter | 執行目前的單元(cell) |
Shift-Enter | 執行目前單元,切換至下一個新單元(命令模式) |
Alt-Enter | 執行目前單元,切換至下一個新單元(編輯模式) |
命令模式 | 作用 |
---|---|
a | 加入上方單元 |
b | 加入下方單元 |
x | 剪下單元 |
c | 複製單元 |
v | 貼上單元 |
第一個Python程式
第一個程式電腦單元(1/3)

鍵盤
滑鼠
觸控螢幕
螢幕
印表機
第一個程式python程式(2/3)


輸入方式: 鍵盤格式: 文字
Python程式

輸出方式: 螢幕格式: 文字 圖表
變數 = input('自訂提示訊息')
python鍵盤輸入函式: input()
python螢幕輸出函式: print()
print('印出的內容', 變數, '其他內容')
括弧內參數: 1個以上,逗點分隔
第一個程式Hello World(3/3)
變數 = input('自訂提示訊息')
python鍵盤輸入函式: input()
python螢幕輸出函式: print()
print('印出的內容', 變數, '其他內容')
問題:從鍵盤輸入「姓名」,在螢幕上印出'Hello 輸入的姓名'
提示
- 變數名稱自訂, 以英文或底線或中文開頭
- 演算法步驟
❶ 使用者輸入姓名
❷ 印出問題要求的訊息
認識變數
Variable
認識變數程式&記憶體空間(1/5)

# coding: utf-8
name = input('請問貴姓大名?')
print('你好,', name)
y = int(input('請問年紀?'))
print('原來你', y, '歲')
w = float(input('請問體重?'))
print('體重為', w)
Python程式
http://www.qnx.com/developers/docs/6.5.0/topic/com.qnx.doc.ide.userguide/images/pic2Fmemory_AboutVirtualMem_.xml_d103150e80.jpg
https://cdn.pixabay.com/photo/2013/04/01/08/38/ram-98420_960_720.png
電腦記憶體空間
(虛擬)
對應關係
(由作業系統負責)

實體記憶體
程式碼空間
資料空間
變數
name
y
變數:暫時儲存資料的地方
認識變數變數(2/5)
# coding: utf-8
name = input('請問貴姓大名?')
print('你好,', name)
y = int(input('請問年紀?'))
print('原來你', y, '歲')
w = float(input('請問體重?'))
print('體重為', w)
- 變數: name, y, w
- 某筆資料的標籤(資料存入變數)
- 暫時儲存(程式結束即消失)

input(): 從鍵盤取得輸入
'王小明'
'37'
'2.35'
'王小明'
name ➞
暫存的空間
37
y ➞
2.35
w ➞
變數
資料的[標籤]
關於變數(variable)
什麼是變數(variable?)
- 有名字的夾鏈袋
- 只能放一張寫了字的便條紙
- 目的: 暫存資料,供後續使用


參考來源: code.org CSP '21-22 Unit 4 - Variables, Conditionals, and Functions
關於變數(variable)
便條紙有很多類:例如數字(整數(int)、浮點數(float))、字串(String)

參考來源: code.org CSP '21-22 Unit 4 - Variables, Conditionals, and Functions
關於變數用於運算


參考來源: code.org CSP '21-22 Unit 4 - Variables, Conditionals, and Functions
關於變數用於運算



參考來源: code.org CSP '21-22 Unit 4 - Variables, Conditionals, and Functions
關於變數用於運算
參考來源: code.org CSP '21-22 Unit 4 - Variables, Conditionals, and Functions

另外寫一張便條紙5, 不要從夾鏈袋拿出來
便條紙8會取代夾鏈袋內的便條紙
認識變數變數(3/5)
x = 125
print(x) # 印出數值125
y = x * 8 * 300 # 星號代表乘法
print(y) # 印出300000
- 建立變數後: 後續可繼續使用(讀取、寫入或計算)
z = 9000
a = z * 12 # 變數a用來暫時儲存總花費
print(a)
- 範例:每月花費9000,每年總花費?
善用變數暫存資料,方便後續計算
- 範例:時薪125,一天工作8小時,一年300天,可賺?
認識變數變數(4/5)
# 收入部份
x = 125
y = x * 8 * 300 # 8小時,300天
# 支出部份
z = 9000
a = z * 12
# 收入減去支出, 存到變數b
b = y - a
print(b) # 印出結果
- 範例:綜合前述收入與支出,則每年可存?
變數名稱的意義? x, y, z , a, b難以記住!
# 收入部份
時薪 = 125
年薪 = 時薪*8*300 # 8小時,300天
# 支出部份
月支 = 9000
年支 = 月支 * 12
# 收入減去支出, 存到變數b
年存 = 年薪 - 年支
print(年存) # 印出結果
為變數取「有意義」的名稱
認識變數變數(5/5)
'王小明'
name ➞
37
y ➞
字串 string
整數 int
e7 | 8e | 8b | e5 | b0 | 8f | e6 | 98 | 8e |
中文字以utf-8格式(3 bytes)儲存



王
小
明
00000000 | 00000000 | 00100101 |
整數以24 bits (3 Bytes) 儲存 隨機器可能不同
二進位表示法
註解
註解comment
name = input('請問貴姓大名?')
# ... 省略
name = '小明' # 重新指定內容
print(name) # 重複使用變數
註解: 程式說明
- 幫助他人了解程式
- 回憶當初程式的寫法與用途
單行註解: 使用#字號
- #字號後該行的文字即為註解
多行註解: 前後各3個單引號 或 3個雙引號
# 作業一: 在螢幕印出使用者的姓名,年紀,體重
# 作者: 王小明
# 版本與日期: 1.0, 2019/2/2
name = input('請問貴姓大名?')
print('你好,', name)
y = int(input('請問年紀?'))
print('原來你', y, '歲')
w = float(input('請問體重?'))
print('體重為', w)
"""
作業一: 在螢幕印出使用者的姓名,年紀,體重
作者: 王小明
版本與日期: 1.0, 2019/2/2
"""
name = input('請問貴姓大名?')
print('你好,', name)
# .... 略
"""
範例:計算每年儲存金額
"""
# 收入部份
時薪 = 125 # 設定時薪
年薪 = 時薪 * 8 * 300 # 8小時,300天 # 計算年薪
# 支出部份
月支 = 9000 # 設定每月花費
年支 = 月支 * 12 # 計算每年花費
# 收入減去支出, 存到變數b
年存 = 年薪 - 年支 # 計算每年儲存金額
print(年存) # 印出結果 # 印出每年儲存金額
註解comment
變數
變數命名(1/7)
命名方式
- 固定規則:如成績就用score 表示,加總就用sum
- 中英文皆可
score1 = 80 # 第一次小考
score2 = 91 # 第二次小考
sum = score1 + score2
print('總分 = ', sum)
print('平均 = ', sum/2)

變數更多範例(2/7)
變數名稱 = 變數值
新增變數
english = 85
physics = 73.5
fruit = '西瓜'
score1 = score2 = score3 = 90
多個變數的值都一樣,可一次指定
age, name = 18, '王小明'
age =18
name = '王小明'
同一行指定多個變數: 變數或值之間以逗號分隔
刪除變數(節省記憶體空間)
del 變數名稱
del score1
del name
del fruit
變數命名規則(3/7)
命名規則
- 第一個字元: 大小寫英文字母、底線、中文
- 其餘:大小寫英文字母、底線、中文、數字
-
英文字母大小寫:視為不同
- 不得為Python保留字
姓名 = '姓名'
Id = 'AA123456'
_score = 100

7eleven = '超商'
M&M = '巧克力'
Bruce Lee = '李小龍'
變數命名規則(4/7)
命名規則
- 不得為Python內建函數
- 萬一誤用,程式不會有錯誤,但函數功能喪失

變數命名 (5/7)
SUM = 100
Sum = 90
sum = 80
print(SUM) # 印出? 100
- 大小寫英文字母:視為不同
SUM = 100
SUM = 90
SUM = 80
print(SUM) # 印出? 80
變數命名(6/7)
- 變數不會自己產生
print(a)

錯誤
停在第一個錯誤的行號
錯誤訊息

編輯時,VS Code便會指出錯誤
錯誤
行號、第幾個字元
錯誤訊息
變數命名(7/7)
- 變數必須先出現在「等號左側」一次, 才能使用
name = input('請輸入:') # 建立變數
print(name) # 已建立, 故可使用
pi = 3.14 # 建立變數, 設定初值為3.14
area = pi * 3 * 3 # pi已建立, 故可使用
學習目標-Part 2
- 運算子
- 運算子優先序
- 字串
運算子
- 作用: 指定做哪種類型運算
- 類型: 指派、算術、比較、邏輯...
運算子運算式(1/3)
運算式expression
- 一個以上的常數(固定不變的值)、變數、運算子、函式組合而成
- 目的: 計算/解讀出另一個數值
score = input('輸入數學成績:')
print(int(score) + 10)
變數
函式
運算子
變數
函式
運算子
函式
常數
常數
程式的運算
非僅指四則運算,其他如變數管理、邏輯判斷也都屬於運算
運算子
運算子operator(2/3)
score = input('輸入數學成績:')
area = pi * r * r # pi, r 皆是已定義的變數
指派運算子
算術運算子
運算子: 指定資料進行何種運算
total = score + 10
運算子
運算子類型(3/3)
area = pi * r * r # '='號為指定運算子
指派運算子
多種運算子類型
算術運算子
比較運算子
邏輯運算子
字串運算子
f = c * 1.8 + 32 # '*', '+':算術運算
(6+9 == 2+13) # 是否相等? True
not(5 > 3) # 非 5>3? False
s = 'Hi' + '你好' # '+':字串串接,非加法
識別運算子identity
成員運算子membership
位移運算子shifting
位元運算子bitwise
運算子
算術運算子
- 四則運算(加減乘除): + - * /
- 餘數和「整數除法」
- 次方
運算子算術運算子(1/6)

- 整數除法 //
- 求餘數 %
- 次方運算 **
area = 3.14 * r * r
area = 3.14 * r**2
改用次方運算子
算術運算子
- 四則運算
- 四則運算之外:
運算子算術運算子(2/6)
x = 5 + 6 # 5加6的結果設定給變數x
print(x) # 印出結果11
y = x - 10 # x減10的結果設定給變數y
print(y) # 列印結果
算術運算子
- 四則運算
y = x - 10 並非「比較」等號兩邊是否相等!
等號右邊 x - 10 先計算
再加結果指派給等號右邊的變數
運算子算術運算子(3/6)
x = 9 % 5 # 9除以5的餘數設定給變數x
print(x)
y = 9 // 2 # 9除以2的整數部份,設定給變數y
print(y) # 印出結果 4
算術運算子
- 餘數和整數除法
- 餘數(mod)運算使用 %
- 整數除法使用 //
運算子算術運算子(4/6)
範例問題:金額分攤
- 使用整數除法 //
算術運算子

程式
執行結果
運算子算術運算子(5/6)
範例問題:依座號分組
- 使用求餘數 %
算術運算子
程式
執行結果

邏輯判斷第4章
比較運算子: ==
運算子算術運算子(6/6)
x = 3 ** 2 # 3的平方設定給變數x
print(x)
y = 3 ** 3 # 3的3次方設定給變數y
print(y) # 印出結果 27
算術運算子
- 次方: **
範例2-1 服裝訂購系統
- 上衣: 300元, 褲子: 350元, 背心: 400元
- 分別輸入上衣、褲子、背心購買的數量
- 輸出總金額
算術運算子
上衣 = input('請輸入上衣數量?')
褲子 = input('請輸入褲子數量?')
背心 = input('請輸入背心數量?')
總金額 = int(上衣)*300 + int(褲子)*350 + int(背心)*400
print('訂購服裝的總金額為', 總金額)
四則運算
說明 input()取得結果為字串,無法運算
故必須先呼叫int()將變數內容轉成「整數」
範例2-2 分組
算術運算子
人數 = 47
組別 = 47 // 5 # 整數除法
print(組別) # 印出組別數
餘數 = 47 % 5 # 餘數運算
print(餘數) # 印出結果
四則運算
- 問題: 全班同學共47人, 若每5人為1組。請問滿5人的可分幾組?剩餘人數有多少?
- 提示:使用'//' 整數除法與 餘數運算%
完成習題2-3
- 問題: 請完成分組程式
- 全班同學依座號進行分組, 每5號為1組。請設計程式,當輸入座號時,可以正確輸出該同學的組別
- 提示:使用'//' 整數除法
算術運算子
整數除法 //


完成習題2-4
- 賣場刺激飲料銷量之促銷方案
- 方案如下:
- 1罐20元,每買1打優惠價200元
- 輸入罐數,計算出正確的消費金額
請輸入購買飲料的罐數? 30
需花費: 520
算術運算子
求餘數 %
優先序
- 計算優先順序
- 例:先乘除後加減、括弧內先算
運算子優先序(1/4)

優先序: 運算式中計算的先後次序
優先序
若不確定計算優先序:加小括號
運算子優先序(2/4)
除了括弧, 先乘除後加減之外...
優先序

運算子優先序(3/4)
優先序

運算子優先序(4/4)
優先序

運算子優先序範例
top = float(input('輸入梯形上底:'))
bottom = float(input('輸入梯形下底:'))
height = float(input('輸入梯形高度:'))
area = (top + bottom) * height / 2 # 先乘除後加減
print('面積是: %10.1f' % area)
範例問題:計算梯形面積
演算法:
- 依序輸入上底、下底、梯形高度
- 使用公式(上底+下底)*高/2 計算梯形面積
- 輸出面積
算術運算子: 加法, 乘法, 除法(浮點數)
優先序計算先後次序: 括弧優先, 先乘除後加減, 左至右...
乘號不可以忽略
指定運算子與多重指定
運算子指定運算子(1/5)

- 等號(=): 指定運算子
- 處理步驟:
- 等號右邊先運算(運算式)
- 再將結果指定給左邊的變數
# 範例 2-5-3 攝氏轉華氏
r = input('輸入半徑(浮點數)')
area = 3.14 * float(r) * float(r)
print('面積是 %8.2f' % area)
c = int(input('輸入攝氏溫度(整數)'))
f = c * 1.8 + 32
print('攝氏%3d度,相當於華氏%3d度' % (c,f))
指定運算子
提示:float()字串轉浮點數,float(), int()也可加在input()之外
練習2-1
- 公里/英哩轉換1英哩=1.609公里
- 輸入英哩數
- 轉換後輸出公里數
指定運算子
算術運算子指派(2/5)
程式中的變數: 經常需要規律增量/減量(類似等差級數)
a = 5
a = a + 1 # 遞增1
b = 8
b = b + 3 # 遞增3
c = 10
c = c - 1 # 遞減1
d = 12
c = c - 2 # 遞減2
a + 1 運算完, 再將值存回 a
遞增1, 遞減1經常用於程式
遞增/遞減: 寫法累贅
指派運算子
+=, -=, ...
指定運算子
算術運算子指派(3/5)

經常使用!
指定運算子
算術運算子指派(4/5)
指定運算子
x = 10
x += 5
print(x) # 印出結果15
x = 10
x -= 5
print(x) # 印出結果5
x = 10
x %= 5
print(x) # 印出結果0
x = 10
x **= 5
print(x) # 印出結果100000
算術運算子多重指定(5/5)
指定運算子
x = y = z = 15
print(x) # 印出結果15
print(y) # 印出結果15
print(z) # 印出結果15
指定相同初值
x, y , z = 10, 20, 30
print(x, y, z) # 印出結果
指定不同初值
print()可一次印出多個變數,只須以逗點相隔
x, y = 10, 20
print(x, y) # 印出結果
x, y = y, x
print(x, y) # x, y值互換
以多重指定互換數值
斷行
# ch2_4.py
a = b = c = 10
x = a + b + c + 12
print(x)
# 續行方法1
y = a +\
b +\
c +\
12
print(y)
# 續行方法2
z = ( a + # 此處可以加上註解
b +
c +
12 )
print(z)
方法1:在行後加上/
注意:/後不可有任何文字
方法2:將運算式加上「小括弧」
資料型態
Data Type
資料型態
- 「數值」資料型態
- 「布林值」資料型態
- 「字串」資料型態
age = 25 # 數值(整數)型別
sign = False # 布林值
motto = '日行一善' # 字串型別
資料型態介紹(1/2)

數值型態 Numerical Type
- 整數 int
- 浮點數 float
- 複數 complex
布林值 Boolean Value
- True
- False
- 可使用bool(運算式) 產生布林值
條件判斷:成立/不成立, 真/假
字串 string
態
資料型態介紹(2/2)
# type() 基本用法
type(數值)
type(字串)
type(變數)
type() 內建函數: 取得物件所屬「資料型態」(類別)
10
<class 'int'>
3.3333333333333335
<class 'float'>
# ch3_1.py
x = 10
y = x / 3
print(x)
print(type(x))
print(y)
print(type(y))
數值資料型態(1/10)
num1 = 30 # 整數
num2 = 3.14 # 浮點數
num3 = 85.0 # 雖為整數值,可加小數點成為浮點數
整數(int)資料型態:等號右邊的數值為整數
浮點數(float)資料型態:數值帶有小數點
# ch3_2.py
x = 10.0
print(x)
print(type(x))
10.0
<class 'float'>
數值資料型態整數、浮點數運算(2/10)
Q. 不同資料型態可否一起運算?
x = 30 # 整數
y = 3.14 # 浮點數
z = 5
a = x + y # 整數 / 浮點數 相加
b = y * z # 整數 / 浮點數 相乘
c = x - z # 整數相減
s = 'Hello' # 字串
x = 100 # 數值
a = x + s # 相加 ???
不一定!

數量 = input('輸入數量:') # 字串
單價 = 100 # 數值
總價 = 數量 * 單價 # 相乘 ???
數值資料型態整數、浮點數運算(3/10)
# ch3_3.py
x = 10 # x 是整數
y = x + 5.5 # 整數 + 浮點數 -> y
print(x)
print(type(x))
print(y)
print(type(y)) # y 是浮點數, 不是整數
10
<class 'int'>
15.5
<class 'float'>
Q. 兩種資料型態運算之後,型態會是?
整數 + 浮點數 → 什麼型態??
變數y若是整數
則會變成15 or 16
x + 5.5 → 10.0 + 5.5 → 15.5
整數, 浮點數一起運算 → 整數會先轉為浮點數 !
數值資料型態整數、浮點數運算(4/10)
# ch3_4.py
x = 10
print(x)
print(type(x)) # 加法前列出x資料型態
x = x + 5.5
print(x)
print(type(x)) # 加法後列出x資料型態
整數 + 浮點數 → 浮點數
即使是「存回」同一變數,也會自動轉換!
10
<class 'int'>
15.5
<class 'float'>
資料型態:有必要時會「自動轉換」
若無法自動轉換 → 必須手動「強制轉換」
數量 = input('輸入數量:') # 字串
單價 = 100 # 整數
總價 = int(數量) * 單價 # 強制轉整數
數值資料型態強制轉換函數(5/10)
int():強制轉整數
# ch3_8.py 將 浮點數 強制轉換為 整數
x = 10.5
print(x)
print(type(x)) # 加法前列出x資料型態
y = int(x) + 5
print(y)
print(type(y)) # 加法後列出y資料型態
10.5
<class 'float'>
15
<class 'int'>
數值資料型態強制轉換函數(6/10)
float():強制轉浮點數
# ch3_9.py 將 整數 強制轉換為 浮點數
x = 10
print(x)
print(type(x)) # 加法前列出x資料型態
y = float(x) + 10
print(y)
print(type(y)) # 加法後列出y資料型態
10
<class 'int'>
20.0
<class 'float'>
數值資料型態整數、浮點數運算(7/10)
練習
- 輸入兩個「浮點數」數值
- 輸出兩個數字的和、兩個數字的平方和
pow(x,y) :可算出x的y次方
數值資料型態整數、浮點數運算(8/10)
練習
- 求三數的總和平均
- 分別輸入三個「整數」數字
- 接著輸出總和、平均,其中總和為整數、平均為浮點數
數值資料型態常用函數(9/10)
# ch3_10.py
x = -10
print("以下輸出abs( )函數的應用")
print(x) # 輸出x變數
print(abs(x)) # 輸出abs(x)
x = 5
y = 3
print("以下輸出pow( )函數的應用")
print(pow(x, y)) # 輸出pow(x,y)
x = 47.5
print("以下輸出round( )函數的應用")
print(x) # 輸出x變數
print(round(x)) # 輸出round(x)
x = 48.5
print(x) # 輸出x變數
print(round(x)) # 輸出round(x)
x = 49.5
print(x) # 輸出x變數
print(round(x)) # 輸出round(x)
以下輸出abs( )函數的應用
-10
10
以下輸出pow( )函數的應用
125
以下輸出round( )函數的應用
47.5
48
48.5
48
49.5
50
abs(x):x的絕對值
pow(x,y): x的y次方
round(y): y四捨五入後的整數值
數值資料型態整數、浮點數運算(10/10)
練習
- 求三數平均
- 分別輸入三個「整數」數字
- 輸出平均(整數,採四捨五入)
資料型態布林值(1/2)
flag = True # 布林值, T需大寫
isDigit = False # 布林值, F需大寫
布林值也具有數值
- True的數值為1, False數值為0
number = 20 + True # number值為21
布林值資料型態:用於邏輯判斷(詳見 流程控制)
分為真值(True)、偽值(False)
邏輯轉換函數:bool()
資料型態布林值(2/2)
# ch3_11.py 列出 布林值 與 資料型態
x = True
print(x)
print(type(x)) # 列出x資料型態
y = False
print(y)
print(type(y)) # 列出y資料型態
True
<class 'bool'>
False
<class 'bool'>
# ch3_12.py 布林值 強制傳換為 整數
x = True
print(int(x))
print(type(x)) # 列出x資料型態
y = False
print(int(y))
print(type(y)) # 列出y資料型態
1
<class 'bool'>
0
<class 'bool'>
資料型態字串(1/10)
字串資料型態:2個單引號 或 雙引號 之間的資料
x = 'This is James's ball' # 語法錯誤!
x = "This is James's ball" # 內容有單引號時,字串用雙引號框起來
print(x)
x = "Deep Learning" # 雙引號設定字串
print(x)
print(type(x)) # 列出x字串資料型態
y = '深度學習滴水穿石' # 單引號設定字串
print(y)
print(type(y)) # 列出y字串資料型態
資料型態字串的連接(2/10)
多個字串可用'+'串接起來
# ch3_14.py
num1 = 222
num2 = 333
num3 = num1 + num2
print("以下是數值相加")
print(num3)
numstr1 = "222"
numstr2 = "333"
numstr3 = numstr1 + numstr2
print("以下是由數值組成的字串相加")
print(numstr3)
numstr4 = numstr1 + " " + numstr2
print("以下是由數值組成的字串相加,同時中間加上一空格")
print(numstr4)
str1 = "DeepStone "
str2 = "Deep Learning"
str3 = str1 + str2
print("以下是一般字串相加")
print(str3)
以下是數值相加
555
以下是由數值組成的字串相加
222333
以下是由數值組成的字串相加,同時中間加上一空格
222 333
以下是一般字串相加
DeepStone Deep Learning
資料型態超過一行的字串(3/10)
使用3個引號,字串可跨行
# ch3_15.py
str1 = '''Silicon Stone Education is an unbiased organization
concentrated on bridging the gap ... '''
print(str1)
資料型態逸出字元(4/10)
逸出字元:要印出特殊字元時,必須在之前加上「反斜線」
逸出字元 | 說明 |
---|---|
\' | 單引號「'」 |
\\ | 反斜線「\」 |
\t | Tab鍵 |
\n | 換行 |
\" | 雙引號「'」 |
str3 = '你好! \n 歡迎光臨'
print(str3)
# 印出
# 你好!
# 歡迎光臨
# ch3_16.py
#以下輸出使用單引號設定的字串,需使用\'
str1 = 'I can\'t stop loving you.'
print(str1)
#以下輸出使用雙引號設定的字串,不需使用\'
str2 = "I can't stop loving you."
print(str2)
#以下輸出有\t和\n字元
str3 = "I \tcan't stop \nloving you."
print(str3)
資料型態強制轉換為字串(5/10)
使用str()函式,可強制轉換為字串
# ch3_17.py
num1 = 222
num2 = 333
num3 = num1 + num2
print("這是數值相加")
print(num3)
str1 = str(num1) + str(num2)
print("強制轉換為字串相加")
print(str1)
這是數值相加
555
強制轉換為字串相加
222333
資料型態字串轉整數(6/10)
# ch3_18.py
x1 = "22"
x2 = "33"
x3 = x1 + x2
print(x3) # 列印字串相加
x4 = int(x1) + int(x2)
print(x4) # 列印整數相加
2233
55
資料型態:有必要時會「自動轉換」
若無法自動轉換 → 必須手動「強制轉換」
數量 = input('輸入數量:') # 字串
單價 = 100 # 整數
總價 = int(數量) * 單價 # 強制轉整數
資料型態字元資料轉換(7/10)
# ch3_19.py
x1 = 97
x2 = chr(x1)
print(x2) # 輸出數值97的字元
x3 = ord(x2)
print(x3) # 輸出字元x3的Unicode碼值
x4 = '魁'
print(ord(x4)) # 輸出字元'魁'的Unicode碼值
a
97
39745
單一字元的字串:可轉為ASCII編碼或Unicode編碼
chr(x):轉為ASCII碼(0~127)
ord(x):中文字可轉為Unicode編碼(0~65535)
資料型態字元資料轉換(8/10)
'+':將字串串接起來
'*':字串可與「整數」相乘,效果是字串重複整數次
# ch3_20.py
x1 = "A"
x2 = x1 * 10
print(x2) # 列印字串乘以整數
x3 = "ABC"
x4 = x3 * 5
print(x4) # 列印字串乘以整數
AAAAAAAAAA
ABCABCABCABCABC
資料型態字串輸出(9/10)
'+' 與換行字元 '\n'搭配:處理字串的分行輸出
# ch3_21.py
str1 = "洪錦魁著作"
str2 = "HTML5+CSS3王者歸來"
str3 = "Python程式語言王者歸來"
str4 = str1 + "\n" + str2 + "\n" + str3
print(str4)
洪錦魁著作
HTML5+CSS3王者歸來
Python程式語言王者歸來
資料型態字串前加r (10/10)
字串前加r:可取消逸出字元的功能
# ch3_22.py
str1 = "Hello!\nPython"
print("不含r字元的輸出")
print(str1)
str2 = r"Hello!\nPython"
print("含r字元的輸出")
print(str2)
不含r字元的輸出
Hello!
Python
含r字元的輸出
Hello!\nPython
資料型態強制轉換(11/12)
# coding: utf-8
score = int(input('分數是?'))
print('王小明的成績是' + score)
- 運算/處理: 通常需要相同資料型別
- 不同型別時➜先做型別「強制轉換」
分數是?25
Traceback (most recent call last):
File "d:/Python/hello.py", line 3, in <module>
print('王小明的成績是' + score)
TypeError: must be str, not int
y = input('請問年紀?') # input(): 字串型別
y = int(y) # int()將 字串 強制轉型為 整數
print('還有', 65-y, '年退休') # y必須是整數才能做數值運算
# coding: utf-8
score = int(input('分數是?'))
print('王小明的成績是'+ str(score))
# 或 print('王小明的成績是', score)
分數是?25
王小明的成績是 25
- 型別帶來的問題: print()裡應該用+號還是逗號?
加號
逗號
資料型態強制轉換(12/12)
轉換型態函式 | 範例 |
---|---|
int() | num = 100 + int("55") |
float() | weight = float(input('重量是?')) |
str() | score = int(input('分數是?')) print('王小明的成績是' +str(score)) |
# 部份運算會自動轉換型態
num = 10 + 1.5 # 整數與浮點數運算: 10轉為浮點數
資料型態更多範例
r_str = input('輸入圓半徑, 單位為cm:')
r = ?????(r_str) # 強制轉型為 浮點數
pi = 3.14
area = ?? * ? * ? # 圓面積為 PI*半徑的平方
print('半徑:', r, '公分,圓面積為:', ????, '平方公分')
問題:計算任何半徑的圓面積
演算法
- 輸入半徑
- 計算圓面積
- 印出結果
πr², 程式關於次方: 連乘 or 呼叫函式
其他運算子in 與 is(1/3)

其他運算子
其他運算子位元運算子(2/3)

位元運算: 數值轉換成二進位表示
運算結果: 從右到左進行位元運算
其他運算子
其他運算子位元運算子(3/3)
其他運算子

摘要整理
- 輸入函式: input() 從鍵盤動態輸入資料
- 輸出函式: print() 輸出內容至螢幕
- 變數用於儲存資料
- 變數有不同型別, 如: 整數 int, 浮點數float, 字串str, 布林值bool
- 不同型別變數經常不能一起運算,需做強制轉型
- input()函式輸入資料為「字串型別」, 如想輸入數字,需強制轉型
- 指定運算子: 等號'='。等號左邊一定是「變數」
- 四則運算
- 一些特殊的運算子:整數除法(//),求餘數(%),次方(**)
- 運算子有優先序,如不清楚則加小括弧
Python程式設計
By Leuo-Hong Wang
Python程式設計
Lesson 2: 變數與資料型別
- 3,060