型別轉換int() float() str()
自動轉型
整數 + 浮點數 = 浮點數
以下程式碼var1是整型,var2是浮點數,若低精度(整型)與高精度(浮點數)相加計算,所產生的計算結果會以高精度(浮點數)為主。
1
2
3
4
5
6
7
var1 = 10
print("var1 type", type(var1))
var2 = 1.2
print("var2 type", type(var2))
var3 = var1 + var2
print("var3 type", type(var3))
print("var3 =", var3)
var1 type <class 'int'>
var2 type <class 'float'>
var3 type <class 'float'>
var3 = 11.2
強制轉型
語法
int(x)
float(x)
str(x)
x可為變數,或常數。
常數範例
int(10.5)
float(10)
str(10)
上述的10就是常數。
字串 + 整數
以下程式碼會執行失敗,因為「字串」不能與整數相加,會產生型別錯誤。
1
2
3
4
5
6
7
var1 = 10
print("var1 type", type(var1))
var2 = "HELLO"
print("var2 type", type(var2))
var3 = var1 + var2
print("var3 type", type(var3))
print("var3 =", var3)
var3 = var1 + var2
~~~~~^~~~~~
TypeError: unsupported operand type(s) for +: 'int' and 'str'
需將整數轉成字串,使用str()函式,此時的+ 加號,是把二個字串相連在一起。
1
2
3
4
5
6
7
var1 = 10
print("var1 type", type(var1))
var2 = "HELLO"
print("var2 type", type(var2))
var3 = str(var1) + var2
print("var3 type", type(var3))
print("var3 =", var3)
var1 type <class 'int'>
var2 type <class 'str'>
var3 type <class 'str'>
var3 = 10HELLO
int float 互轉
將整數10轉成float,不會影嚮var1原本的型別,var1變數不管如何轉型,仍是整數型別。
1
2
3
4
5
6
7
var1 = 10
var2 = float(var1)
print("var1 type", type(var1), "var1 = ", var1)
print("var2 type", type(var2), "var2 = ", var2)
var3 = str(var1)
print("var1 type", type(var1), "var1 = ", var1)
print("var3 type", type(var3), "var3 = ", var3)
var1 type <class 'int'> var1 = 10
var2 type <class 'float'> var2 = 10.0
var1 type <class 'int'> var1 = 10
var3 type <class 'str'> var3 = 10
int轉float會增加小數點一位
10 → 10.0
float轉int會無條件去除小數點
10.99 → 10
1
2
3
4
5
6
7
8
var1 = 10
var2 = float(var1)
print("var1 type", type(var1), "var1 = ", var1)
print("var2 type", type(var2), "var2 = ", var2)
var3 = 10.99
var4 = int(var3)
print("var3 type", type(var3), "var3 = ", var3)
print("var4 type", type(var4), "var4 = ", var4)
var1 type <class 'int'> var1 = 10
var2 type <class 'float'> var2 = 10.0
var3 type <class 'float'> var3 = 10.99
var4 type <class 'int'> var4 = 10
int float 互轉 字串
int float 都可以直接轉成字串
1
2
3
4
var1 = str(10)
var2 = str(10.99)
print("var1 type", type(var1), "var1 = ", var1)
print("var2 type", type(var2), "var2 = ", var2)
var1 type <class 'str'> var1 = 10
var2 type <class 'str'> var2 = 10.99
字串的值是浮點數,不可轉成int
1
2
3
4
var1 = "10.99"
var2 = int(var1)
print("var1 type", type(var1), "var1 = ", var1)
print("var2 type", type(var2), "var2 = ", var2)
var2 = int(var1)
^^^^^^^^^
ValueError: invalid literal for int() with base 10: '10.99'
字串的值是整數,轉成float不會有問題。
1
2
3
4
var1 = "10"
var2 = float(var1)
print("var1 type", type(var1), "var1 = ", var1)
print("var2 type", type(var2), "var2 = ", var2)
var1 type <class 'str'> var1 = 10
var2 type <class 'float'> var2 = 10.0
無法將文字轉成int與float
1
2
var1 = ("Hello")
var2 = int(var1)
var2 = int(var1)
^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'Hello'