Python - 基本資料型別_Number 數字、bool 布林、complex 複數

小菠蘿測試筆記發表於2021-07-18

Number

數字,是一個大的分類,細分四小類

  • 整數:int
  • 浮點數:float
  • 布林:bool
  • 複數:complex

 

int 的栗子

print(type(-1))
print(type(1))
print(type(-999999999999999))
print(type(9999999999999999))

// 輸出結果
<class 'int'>
<class 'int'>
<class 'int'>
<class 'int'>
  • 無論正數負數都是 int
  • 即使數字再長也還是 int,不會變成像 java 的 long

 

float 的栗子

print(type(-1.0))
print(type(1.11))
print(type(-1.11111111111111))

//輸出結果
<class 'float'>
<class 'float'>
<class 'float'>

即使精度再大,也還是 float,不會像 java 分單精度、雙精度

 

加法

print(type(1 + 1))
print(type(1 + 1.0))
print(type(1 + 0.0))
print(type(1 + 1.11))

# 輸出結果
<class 'int'>
<class 'float'>
<class 'float'>
<class 'float'>
  • int + int = int
  • int + float = float,會自動轉型為浮點數
  • float + float = float

 

減法

print(type(1 - 1))
print(type(1 - 0.0))
print(type(1 - 1.1))
print(type(2.0 - 1))

# 輸出結果
<class 'int'>
<class 'float'>
<class 'float'>
<class 'float'>

和加法一個道理

 

乘法

print(type(1 * 1))
print(type(1 * 1.0))
print(type(-1 * -1.0))
print(type(2.0 * 1))

# 輸出結果
<class 'int'>
<class 'float'>
<class 'float'>
<class 'float'

和加減法一個道理

 

除法

print(type(2 / 2))
print(type(2 / 1.0))
print(type(2 // 2))
print(type(2 // 1.0))

# 輸出結果
<class 'float'>
<class 'float'>
<class 'int'>
<class 'float'

和加減乘法稍稍不一樣哦,具體看下面

 

/ 和 // 的區別

  • / 除法,自動轉型成浮點數
  • // 整除,只保留整數部分
print(2 / 2)
print(2 // 2)
print(1 / 2)
print(1 // 2)

# 輸出結果
1.0
1
0.5
0

 

進位制數

10 進位制

  • 0,1,2,3,4,5,6,7,8,9
  • 滿 10 進 1 位
  • 正常寫的 Number 都是 10 進位制

 

2 進位制

  • 0,1
  • 滿 2 進 1 位
# 二進位制
print(0b10)  # 2^1 + 0
print(0b11)  # 2^1 +2^0
print(0b100)  # 2^2 + 0 + 0

# 輸出結果
2
3
4

  

8 進位制

  • 0,1,2,3,4,5,6,7
  • 滿 8 進 1 位
# 八進位制
print(0o1)  # 1
print(0o11)  # 8^1 + 1
print(0o117)  # 8^2 + 8^1 + 7

# 輸出結果
1
9
79

 

16 進位制

  • 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
  • 滿 16 進 1 位
# 十六進位制
print(0x1)  # 1
print(0x19)  # 16+9
print(0x2A)  # 16*2+10
print(0x9F)  # 16*9+15

# 輸出結果
1
25
42
159

 

int() 轉成十進位制

int 可以將數字字串和 Number 型別的值轉成整數

# 轉成十進位制
print(0b101)
print(0o777)
print(0xBBB)
print(int(0b101))
print(int(0o777))
print(int(0xBBB))
print(int("-123"))
print(int(1.1))
print(int(1.9))

# 輸出結果
5
511
3003
5
511
3003
-123
1
1
  • 不寫 int() 的話,也可以將其他進位制的數自動轉成十進位制
  • int() 能將純整數(不能是浮點數)的字串轉成 int 型別
  • 傳入浮點數不會進行四捨五入,直接取整數部分

 

bin() 其他進位制數轉二進位制

# 轉成二進位制
print(bin(10))  # 10 轉成 2進位制
print(bin(0o7))  # 7 轉成 2進位制
print(bin(0xA))  # 10 轉成 2進位制
print(bin(0o27))  # 8*2+7 轉成 2進位制
print(bin(0x22E))  # 16^2*2+16*2+14 轉成 2進位制

# 輸出結果
0b1010
0b111
0b1010
0b10111
0b1000101110

  

oct() 其他進位制轉成八進位制

# 轉成八進位制
print(oct(110))
print(oct(0b100))
print(oct(0xAAA))

# 輸出結果
0o156
0o4
0o5252

  

hex() 其他進位制轉成十六進位制

# 轉成十六進位制
print(hex(110))
print(hex(0b100))
print(hex(0o777))

# 輸出結果
0x6e
0x4
0x1ff

 

bool

布林型別

  • 真:True
  • 假:False 
# 列印 bool 和 type
print(True)
print(False)
print(type(True))
print(type(False))

# 輸出結果
True
False
<class 'bool'>
<class 'bool'>

注意不是 true 和 false哦

 

為什麼說 bool 屬於 Number 的一種呢?

# 可以將它轉成 int 呢?
print(int(True))
print(int(False))

# 輸出結果
1
0

因為 int 能講 bool 轉成整型,True 就是 1,False 就是 0

 

那只有 1 和 0 能表示 True 和 False嗎?

並不是

Number 

# 數字
print(bool(1))
print(bool(1.1))
print(bool(-1))
print(bool(0))

# 輸出結果
True
True
True
False

 

字串

# 字串
print(bool("123"))
print(bool(""))
print(bool("  "))
print(bool("\n"))

# 輸出結果
True
False
True
True

 

列表

# 列表
print(bool([1, 1]))
print(bool([]))

# 輸出結果
True
False

 

元組

# 元組
print(bool((1, 1)))
print(bool(()))

# 輸出結果
True
False

 

set

# set
print(bool({1, 1, 1}))
print(bool({}))

# 輸出結果
True
False

  

None

# None
print(bool(None))

# 輸出結果
False

  

總結

無論什麼資料型別,主要是空值就會為 False,非空就是 True

 

複數

  • 36j,直接在數字後面加 j
  • 用的比較少,不寫了

相關文章