型別轉換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'

results matching ""

    No results matching ""