Python 數(shù)據(jù)類型詳細(xì)篇:數(shù)值
Python 的數(shù)值可以表示三種類型的數(shù)據(jù):
-
整數(shù) :可以表示正數(shù),例如 123;可以表示負(fù)數(shù),例如 123;使用 0 表示零。
-
浮點(diǎn)數(shù):浮點(diǎn)數(shù)由整數(shù)部分與小數(shù)部分組成,例如 123.456。
-
復(fù)數(shù):復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,例如 1 + 2j,實(shí)數(shù)部分是 1,虛數(shù)部分是 2。
1. 基本運(yùn)算
1.1 加法
- 整數(shù)相加
>>> 1 + 1
2
- 浮點(diǎn)數(shù)相加
>>> 1.2 + 2.3
3.5
- 復(fù)數(shù)相加
>>> x = 1 + 2j
>>> y = 2 + 3j
>>> x + y
(3 + 5j)
1.2 減法
- 整數(shù)相減
>>> 2 - 1
1
- 浮點(diǎn)數(shù)相減
>>> 2.3 - 1.2
1.09999999999999
輸出結(jié)果為 1.09999999999999,而不是 1.1。在計(jì)算機(jī)內(nèi)部,有的浮點(diǎn)數(shù)無(wú)法被精確的表示,在這個(gè)例子中,只能使用近似值來(lái)表示 1.1。
- 復(fù)數(shù)相減
>>> x = 1 + 2j
>>> y = 2 + 3j
>>> y - x
(1 + 1j)
1.3 乘法
- 整數(shù)相乘
>>> 1 * 2
2
- 浮點(diǎn)數(shù)相乘
>>> 1.1 * 1.1
1.21000000000002
輸出結(jié)果為 1.21000000000002,而不是 1.21。在計(jì)算機(jī)內(nèi)部,有的浮點(diǎn)數(shù)無(wú)法被精確的表示,在這個(gè)例子中,只能使用近似值來(lái)表示 1.21。
- 復(fù)數(shù)乘法
>>> (1 + 2j) * 2
(2 + 4j)
1.4 除法
- 整數(shù)除法
>>> 5 // 2
2
在 Python 中,// 是整數(shù)除法運(yùn)算,運(yùn)算結(jié)果是商的整數(shù)部分,是一個(gè)整數(shù)。
- 浮點(diǎn)數(shù)除法
>>> 5 / 2
2.5
在 Python 中,/ 是浮點(diǎn)數(shù)除法運(yùn)算,運(yùn)算結(jié)果是商,是一個(gè)浮點(diǎn)數(shù)。
- 復(fù)數(shù)除法
>>> (2 + 2j) / 2
(1 + 1j)
1.5 求模
求模運(yùn)算返回除法的余數(shù)。
- 整數(shù)求模
>>> 5 % 2
1
- 浮點(diǎn)數(shù)求模
>>> 5.1 % 2
1.09999999999999
輸出結(jié)果為 1.09999999999999,而不是 1.1。在計(jì)算機(jī)內(nèi)部,有的浮點(diǎn)數(shù)無(wú)法被精確的表示,在這個(gè)例子中,只能使用近似值來(lái)表示 1.1。
1.6 冪運(yùn)算
- 整數(shù)求冪
計(jì)算 2 的 3 次方,即 2 * 2 * 2:
>>> 2 ** 3
8
- 浮點(diǎn)數(shù)求冪
計(jì)算 1.1 的 3 次方,即 1.1 * 1.1 * 1.1:
>>> 1.1 ** 3
1.33100000000004
1.7 比較運(yùn)算
Python 提供了 6 種比較運(yùn)算用于比較數(shù)值大小,如下所示:
運(yùn)算符 | 功能描述 |
---|---|
> | 大于 |
>= | 大于或者等于 |
== | 等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
比較運(yùn)算的結(jié)果返回 True 或者 False,如下所示:
>>> 2 > 1
True
>>> 2 < 1
False
>>> 2 >= 2
True
>>> 2 <= 2
True
>>> 1 == 1
True
>>> 1 != 1
False
2. 類型轉(zhuǎn)換
2.1 為什么要進(jìn)行類型轉(zhuǎn)換
假設(shè)希望用戶輸入 2 個(gè)整數(shù),然后將用戶輸入的整數(shù)相加,最后打印結(jié)果。在 Python 交互模式下輸入:
>> a = input()
2
>> b = input()
2
>> a
'2'
>> b
'2'
>> a + b
'22'
- 在第 1 行,使用 input 讀取用戶輸入的一行文本(字符串),用戶輸入字符 2;
- 在第 3 行,使用 input 讀取用戶輸入的一行文本(字符串),用戶輸入字符 2;
- 在第 5 行,顯示變量 a 的值為字符串 ‘2’;
- 在第 7 行,顯示變量 b 的值,為字符串 ‘2’;
- 在第 9 行,將兩者相加;在第 10 行,得到最終結(jié)果 ‘22’。
程序的輸出結(jié)果和我們的期望不一致,原因是 input 返回的是一個(gè)字符串而不是一個(gè)整數(shù),在 Python 中兩個(gè)字符串相加表示把兩個(gè)字符串連接起來(lái)。因此,最終輸出結(jié)果是一個(gè)字符串 ‘22’,而不是一個(gè)整數(shù) 4。
2.2 將字符串轉(zhuǎn)換為整數(shù)
Python 提供函數(shù) int 用于將字符串轉(zhuǎn)換為整數(shù)。使用 int 函數(shù)重寫以上程序如下:
>> a = input()
'1'
>> b = input()
'1'
>> x = int(a)
>> y = int(b)
>> x + y
2
- 在第 5 行,將字符串 a 轉(zhuǎn)換為整數(shù) x
- 在第 6 行,將字符串 b 轉(zhuǎn)換為整數(shù) y
- 在第 7 行,將整數(shù) x 和整數(shù) y 相加,得到結(jié)果 2
將 input 返回的結(jié)果從將字符串轉(zhuǎn)換為整數(shù)后,我們得到了預(yù)期的結(jié)果。
2.3 將整數(shù)轉(zhuǎn)換為字符串
Python 提供函數(shù) str 用于將整數(shù)轉(zhuǎn)換為字符串,例如:
>> a = 1
>> b = 1
>> x = str(a)
>> y = str(b)
>> x + y
'11'
- 在第 3 行,將整數(shù) a 轉(zhuǎn)換為字符串 x
- 在第 4 行,將整數(shù) b 轉(zhuǎn)換為字符串 y
- 在第 5 行,將字符串 x 和字符串 y 相加,得到結(jié)果 ‘11’
3. 常用的數(shù)學(xué)函數(shù)
在 Python 的 math 模塊中包含如下常用的數(shù)學(xué)函數(shù),在詞條 “Python 中常用的標(biāo)準(zhǔn)庫(kù)系列之 math 模塊” 獲取詳細(xì)用法。
函數(shù) | 功能描述 |
---|---|
abs(x) | 返回?cái)?shù)值的絕對(duì)值 |
ceil(x) | 返回?cái)?shù)值的上入整數(shù) |
exp(x) | 返回 e 的 x 次冪 |
fabs(x) | 返回浮點(diǎn)數(shù)的絕對(duì)值 |
floor(x) | 返回浮點(diǎn)數(shù)的下舍整數(shù) |
log(x) | 返回 x 的自然對(duì)數(shù) |
log10(x) | 返回以 10 為基數(shù)的 x 的對(duì)數(shù) |
max(x, y) | 返回給定參數(shù)的最大值 |
min(x, y) | 返回給定參數(shù)的最小值 |
pow(x, y) | 返回以 x 為底數(shù)、y 為指數(shù)的運(yùn)算結(jié)果 |
round(x) | 返回浮點(diǎn)數(shù) x 的四舍五入值 |
sqrt(x) | 返回?cái)?shù)值 x 的平方根 |
4. 常用的三角函數(shù)
在 Python 的 math 模塊中包含如下常用的三角函數(shù),在詞條 “Python 中常用的標(biāo)準(zhǔn)庫(kù)系列之 math 模塊” 獲取詳細(xì)用法。
函數(shù) | 功能描述 |
---|---|
acos(x) | 返回 x 的反余弦弧度值 |
asin(x) | 返回 x 的反正弦弧度值 |
atan(x) | 返回 x 的反正切弧度值 |
cos(x) | 返回x的弧度的余弦值 |
hypot(x, y) | 返回歐幾里德范數(shù) sqrt(xx + yy) |
sin(x) | 返回的x弧度的正弦值 |
tan(x) | 返回x弧度的正切值 |
degrees(x) | 將弧度轉(zhuǎn)換為角度 |
radians(x) | 將角度轉(zhuǎn)換為弧度 |
5. 小結(jié)
這節(jié)課我們講解了 Python 基本數(shù)據(jù)類型數(shù)值的基本運(yùn)算和類型轉(zhuǎn)換和常用函數(shù)等。常用的函數(shù)需要大家自己多多使用,畢竟熟能生巧。