Python程式設計

Lesson 2: 認識變數 基本數學運算 與 資料型別

last updated: 2022/3/11

學習目標-Part 1

  • 使用VS Code開發python程式
  • Python程式碼註解方式
  • Python變數: 命名與使用

工具介紹

VS Code

VS Code安裝與中文化(1/5)

❶中文化

❷切換中文語系

照這篇 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)

Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
https://marketing-prod.global.ssl.fastly.net/sites/default/files/inline-images/Code_Python_Intro_Mac_Laptop.jpg

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

Python程式

輸出方式: 螢幕格式: 文字 圖表

變數 = input('自訂提示訊息')

python鍵盤輸入函式: input()

python螢幕輸出函式: print()

print('印出的內容', 變數, '其他內容')

括弧內參數: 1個以上,逗點分隔

第一個程式Hello World(3/3)

變數 = input('自訂提示訊息')

python鍵盤輸入函式: input()

python螢幕輸出函式: print()

print('印出的內容', 變數, '其他內容')

問題:從鍵盤輸入「姓名」,在螢幕上印出'Hello 輸入的姓名'

提示

  1. 變數名稱自訂, 以英文或底線或中文開頭
  2. 演算法步驟
    ❶ 使用者輸入姓名
    印出問題要求的訊息

認識變數

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
  • 某筆資料的標籤(資料存入變數)
  • 暫時儲存(程式結束即消失)
Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY

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)

  1. 整數除法  //
  2. 求餘數      %
  3. 次方運算  **
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)

範例問題:計算梯形面積

演算法:

  1. 依序輸入上底、下底、梯形高度
  2. 使用公式(上底+下底)*高/2 計算梯形面積
  3. 輸出面積

算術運算子: 加法, 乘法, 除法(浮點數)

優先序計算先後次序:  括弧優先, 先乘除後加減, 左至右...

乘號不可以忽略

指定運算子與多重指定

運算子指定運算子(1/5)

  • 等號(=): 指定運算子
  • 處理步驟:
    1. 等號右邊先運算(運算式)
    2. 再將結果指定給左邊的變數
# 範例 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)

練習

  1. 輸入兩個「浮點數」數值
  2. 輸出兩個數字的和、兩個數字的平方和
    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, '公分,圓面積為:', ????, '平方公分')

問題:計算任何半徑的圓面積

演算法

  1. 輸入半徑
  2. 計算圓面積
  3. 印出結果

π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