【Python】內建資料型態 - Numeric Types

Contents


Booleans

在 Python 中,布林值以 TrueFalse 表示。所有非零的值都可以代表 True,0則代表 False。內建函式 bool() 會回傳物件的布林值,使用 bool() 時,會呼叫物件方法 (method) __bool__() 判斷物件的布林值。

若 __bool__() 未定義,則呼叫物件方法 __len__() ,當 __len__() 回傳值為0時,bool() 的回傳值為 False;反之則為 True

若 __bool__() 與 __len__() 皆未定義,bool()一律回傳 True

a = "abc"
b = ""
print("a : ", bool(a))
print("b : ", bool(b))

x = 12.5
y = 0.0
print("x : ", bool(x))
print("y : ", bool(y))

#----------Output----------
# a :  True
# b :  False
#
# x :  True
# y :  False

布林運算子

# 說明 : 若 x 為 False,則回傳 x;反之回傳 y
# 備註 : 只有 x 為 True 的時候才會判斷 y
x and y

# 說明 : 若 x 為 False,則回傳 y;反之回傳 x
# 備註 : 只有 x 為 False 的時候才會判斷 y
x or y

# 說明 : 若x為False,則回傳True;反之回傳False
not x

關係運算子

# 說明 : 判斷 x 是否"小於" y
x < y

# 說明 : 判斷 x 是否"小於或等於" y
x <= y

# 說明 : 判斷 x 是否"大於" y
x > y

# 說明 : 判斷 x 是否"大於或等於" y
x >= y

# 說明 : 判斷 x 是否"等於" y
x == y

# 說明 : 判斷 x 是否"不等於" y
x != y

# 說明 : 判斷 x, y 是否為同一物件 (x, y的 id 是否相同)
x is y

# 說明 : 判斷 x, y 是否為不同物件 (x, y的 id 是否不同)
x is not y

Integers

在 C語言中,int 儲存大小通常為 4 bytes,因此可表示的範圍為 -2,147,483,648 ~ 2,147,483,647。但在 Python 中,整數型態的可表示範圍並沒有限制,視記憶體大小而定。

使用內建函數 int() 可以強制轉換為整數型態。

x = int(3.5)
print("x : ", x)

#-------Output-------
# x :  3

內建函數 bin(), oct(), hex() 可以將十進制的整數轉換成二進制、八進制、十六進制。

a = 12
print("Bin of a : ", bin(a))
print("Oct of a : ", oct(a))
print("Hex of a : ", hex(a))

#-----------Output-----------
# Bin of a :  0b1100
# Oct of a :  0o14
# Hex of a :  0xc

Floats

Python 的 float 通常等於 C語言的 double。

使用內建函數 float() 可以強制轉換為浮點數型態。

x = float(3)
print("x : ", x)

#-------Output-------
# x :  3.0

Infinity and NaN

# 無限大
float("inf")

# 負無限大
float("-inf")

# Not a Number
float("nan")

Complex Numbers

Python 的複數以 a + bja - bj 的形式表示。

a = 1 - 2j
print("Real part : ", a.real)
print("Imaginary part: ", a.imag)

#---------------Output---------------
# Real part :  1.0
# Imaginary part:  -2.0

使用內建函數 complex(real, imag) 會回傳一個複數。

x = complex(4, 3)
print("x : ", x)

#-------Output-------
# x :  (4+3j)

x.conjugate() 會回傳 x 的共軛複數

a = 1 + 2j
print("conjugate of a : ", a.conjugate())

#------------------Output------------------
# conjugate of a :  (1-2j)

None

None 常用來暫時替代不確定的值 (例如 : 作為函式引數的預設值)。此外在 Python 中,None 是一個獨一無二的存在,除了 None 本身,沒有任何物件等於 None。

print(None == False)
print(None == [])
print(None == 0)
print(None == "")
print(None == None)

#-----------Output-----------
# False
# False
# False
# False
# True

常見的運算

數學運算

以下部分運算並不支援 complex number。另外,int 與 float 的進階數學運算可以使用 math module;complex 則可以使用 cmath module。

# 說明 : 加法運算
x + y

# 說明 : 減法運算
x - y

# 說明 : 乘法運算
x * y

# 說明 : 除法運算
x / y

# 說明 : x 除以 y 的商
x // y

# 說明 : x 除以 y 的餘數
x % y

# 說明 : 回傳值為(x//y, x%y)
divmod(x, y)

# 說明 : x 的 y 次方
pow(x, y)
x ** y

# 說明 : x 的大小 (magnitude)
abs(x)

Bitwise 邏輯運算

Bitwise 邏輯運算只支援 int 型態。

# 說明 : Bitwise 的 and
x & y

# 說明 : Bitwise 的 or
x | y

# 說明 : Bitwise 的 not
~x

# 說明 : Bitwise 的 exclusive or
x ^ y

# 說明 : 左移 n 位元
x << n

# 說明 : 右移 n 位元
x >> n

Reference

留言