Python 3.1 快速導覽 - 型態轉換

數字型的資料型態 (data type) ,包括整數 (integer) 、浮點數 (float-pointing number) 及複數 (complex number) ,運算式 (expression) 中會自動進行資料轉換,轉換的原則是以轉換到儲存範圍大的為主,例如運算元 (operand) 中有整數與浮點數,運算式的結果會是浮點數,又如運算元中有浮點數與複數,結果就會是複數。



以下程式印出整數、浮點數、複數相加的結果
a = 1
b = 2.1
c = 3 + 4j
d = 5 + 6.2j
e = 7.3 + 8.4j
f = 7.3 - 8.4j

print(a + b, a + c, a + d, a + e)
print(b + c, b + d, b + e)
print(c + d, c + e)
print(d + e)
print(e + f)

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:con01.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



運算適中的自動型態轉換是由儲存範圍小的轉換到儲存範圍大的,若是相反過來,浮點數轉換為整數,可以利用內建函數 (function) int() 進行轉換
a = 1
b = 2
c = 3.6
d = 3.6

print(int(a + c), int(a + d))
print(float(a + b))
print(complex(a + b))

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:con02.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



此例中的第 9 行
print(int(a + c), int(a + d))


a + c 實際等於 4.1 ,而 a + d 實際等於 4.6 ,從這裡可以看出利用 int() 轉換為整數採取無條件捨去小數點後的數字。


float() 強制轉換運算式結果為浮點數, complex() 強制轉換運算式結果為複數,這與自動轉換的結果相似,可用於兩個整數相加的強制型態轉換。


此外須注意,複數無法套用 int() 或 float() ,但可利用複數物件的屬性 real 存取實部, imag 存取虛部,得到會事浮點數的結果,例如以下程式
a = 3 + 5j
print("a =", a)

b = 3 - 5j
print("b =", b)

c = a * b
if c.imag == 0:
    c = c.real
print("c =", c)

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:con03.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



變數 (variable) a 與 b 都是複數,雖然 a 乘以 b 的虛部會得到 0 ,結果應該是整數,但 Python 仍把複數的計算結果當成複數。此例利用簡單的 if 陳述 (statement) 測試虛部是否為 0 ,若為 0 ,結果就以實部儲存。


中英文術語對照
資料型態data type
整數integer
浮點數float-pointing number
複數complex number
運算式expression
運算元operand
函數function
變數variable
陳述statement




沒有留言: