Python中存在四種不同的數字類型(Number):
-
整數(int)
-
浮點數(float)
-
布爾類型(bool)
-
復數(complex)
注意:數字類型(Number)是不可變的數據類型
整數(int)
Python3之后只有一種整數類型int,表示長整型,不再有之前的long類型。int或整數是完整的數字,正數或負數,沒有小數,長度是不限。默認用十進制表示,同時也支持二進制,八進制,十六進制表示方式。
a = 100
print(a) # 100
print(type(a)) # <class 'int'>
注: type函數可以查看數據的類型。
二進制整型:
b = 0b10
print(b) # 2
print(type(b)) # <class 'int'>
# 獲取內存地址
print(id(b)) # 140708807614896
八進制整型:
c = 0o127
print(c) # 87
print(type(c)) # <class 'int'>
十六進制整型:
d = 0xa
print(d) # 10
print(type(d)) # <class 'int'>
各進制之間轉換的內置函數:
-
bin(i):將i轉換為2進制,以
0b
開頭。 -
oct(i):將i轉換為8進制,以
0o
開頭。 -
int(i):將i轉換為10進制。
-
hex(i):將i轉換為16進制,以
0x
開頭。
浮點數(float)
Python的浮點數也就是數學中的小數,如3.14,2.5,-0.3
str1 = 3.14
print(str1) # 3.14
print(type(str1)) # <class 'float'>
科學計數法表示:
str2 = 3.1e4
print(str2) # 31000.0 小數點右移4位
print(type(str2)) # <class 'float'>
str3 = 3.1e-2
print(str3) # 0.031 小數點左移2位
布爾(bool)
在Python中,布爾(bool)只有兩個值 True
和 False
var1 = True
print(var1) # True
print(type(var1)) # <class 'bool'>
var2 = False
print(var2) # False
復數(complex)
復數由實數部分和虛數部分組成,可以用 a+bj
或者 complex(a, b)
表示,復數的實部a和虛部b都是浮點型。
方式1:
complex_var1 = 3 + 10j
print(complex_var1) # (3+10j)
print(type(complex_var1)) # <class 'complex'>
complex_var2 = -3j
print(type(complex_var2)) # <class 'complex'>
方式2:
complex(實數, 虛數)
var = complex(3, -10)
print(var) # (3-10j)
print(type(var)) # <class 'complex'>
Number強制類型轉換
int()
float轉為int:
var1 = 3.14
print(int(var1)) # 3
bool轉為int:
var2 = True
var3 = False
print(int(var2)) # 1
print(int(var3)) # 0
str轉為int:
var4 = "1234"
print(int(var4)) # 1234
# 純數字字符串才可以轉,否則報錯
var5 = "abc"
print(int(var5)) # invalid literal for int() with base 10: 'abc'
float()
int轉為float:
a = 123
print(float(a)) # 123.0
bool轉為float:
b = True
print(float(b)) # 1.0
c = False
print(float(c)) # 0.0
str轉為float:
d = "1234"
print(float(d)) # 1234.0
complex()
int轉為complex:
x = 10
print(complex(10)) # (10+0j)
float轉為complex:
y = 13.4
print(complex(y)) # (13.4+0j)
bool轉為complex:
z = True
print(complex(z)) # (1+0j)
u = False
print(complex(u)) # 0j
str轉為complex:
v = "345"
print(complex(v)) # (345+0j)
bool()
bool類型為假的情況:
print(bool(0)) # False
print(bool(0.0)) # False
print(bool(0j)) # False
print(bool("")) # False
print(bool([])) # False
print(bool(())) # False
print(bool({})) # False
print(bool(None)) # False
注意: None是Python中的關鍵字,表示空值,是一個特殊的值,類型是 NoneType
。
print(type(None)) # <class 'NoneType'>
Number自動類型轉換
默認精度從低向高進行轉換: bool -> int -> float -> complex
# bool + int
res = True + 10
print(res, type(res)) # 11 <class 'int'>
# bool + float
res = True + 3.1
print(res, type(res)) # 4.1 <class 'float'>
# bool + complex
res = True + 5-10j
print(res, type(res)) # (6-10j) <class 'complex'>
# int + float
res = 10 + 3.14
print(res, type(res)) # 13.14 <class 'float'>
# int + complex
res = 10 + 2 + 3j
print(res, type(res)) # (12+3j) <class 'complex'>
# float + complex
res = 3.4 + 2 - 4j
print(res, type(res)) # (5.4-4j) <class 'complex'>