鍍金池/ 教程/ Python/ 常用數(shù)學(xué)函數(shù)和運(yùn)算優(yōu)先級(jí)
標(biāo)準(zhǔn)庫(kù) (4)
如何成為 Python 高手
標(biāo)準(zhǔn)庫(kù) (6)
標(biāo)準(zhǔn)庫(kù) (3)
類(2)
Pandas 使用 (2)
xml
用 tornado 做網(wǎng)站 (5)
文件(1)
練習(xí)
列表(3)
從小工到專家
除法
錯(cuò)誤和異常 (2)
函數(shù)(1)
用 tornado 做網(wǎng)站 (7)
為做網(wǎng)站而準(zhǔn)備
函數(shù)練習(xí)
標(biāo)準(zhǔn)庫(kù) (8)
Pandas 使用 (1)
回顧 list 和 str
字典(1)
用 tornado 做網(wǎng)站 (3)
字符串(1)
函數(shù)(2)
寫一個(gè)簡(jiǎn)單的程序
將數(shù)據(jù)存入文件
語(yǔ)句(5)
SQLite 數(shù)據(jù)庫(kù)
集成開發(fā)環(huán)境(IDE)
集合(1)
類(1)
用 tornado 做網(wǎng)站 (6)
用 tornado 做網(wǎng)站 (2)
自省
語(yǔ)句(4)
錯(cuò)誤和異常 (1)
用 tornado 做網(wǎng)站 (4)
集合(2)
列表(1)
標(biāo)準(zhǔn)庫(kù) (1)
生成器
mysql 數(shù)據(jù)庫(kù) (1)
第三方庫(kù)
實(shí)戰(zhàn)
運(yùn)算符
類(3)
字典(2)
語(yǔ)句(1)
數(shù)和四則運(yùn)算
語(yǔ)句(2)
文件(2)
MySQL 數(shù)據(jù)庫(kù) (2)
電子表格
迭代器
mongodb 數(shù)據(jù)庫(kù) (1)
特殊方法 (2)
特殊方法 (1)
字符編碼
編寫模塊
用 tornado 做網(wǎng)站 (1)
標(biāo)準(zhǔn)庫(kù) (5)
函數(shù)(4)
類(5)
字符串(2)
關(guān)于 Python 的故事
函數(shù)(3)
字符串(4)
處理股票數(shù)據(jù)
常用數(shù)學(xué)函數(shù)和運(yùn)算優(yōu)先級(jí)
字符串(3)
為計(jì)算做準(zhǔn)備
多態(tài)和封裝
類(4)
迭代
語(yǔ)句(3)
錯(cuò)誤和異常 (3)
分析 Hello
Python 安裝
標(biāo)準(zhǔn)庫(kù) (2)
列表(2)
元組

常用數(shù)學(xué)函數(shù)和運(yùn)算優(yōu)先級(jí)

在數(shù)學(xué)之中,除了加減乘除四則運(yùn)算之外——這是小學(xué)數(shù)學(xué)——還有其它更多的運(yùn)算,比如乘方、開方、對(duì)數(shù)運(yùn)算等等,要實(shí)現(xiàn)這些運(yùn)算,需要用到 Python 中的一個(gè)模塊:Math

模塊(module)是 Python 中非常重要的東西,你可以把它理解為 Python 的擴(kuò)展工具。換言之,Python 默認(rèn)情況下提供了一些可用的東西,但是這些默認(rèn)情況下提供的還遠(yuǎn)遠(yuǎn)不能滿足編程實(shí)踐的需要,于是就有人專門制作了另外一些工具。這些工具被稱之為“模塊”

任何一個(gè) Pythoner 都可以編寫模塊,并且把這些模塊放到網(wǎng)上供他人來使用。

當(dāng)安裝好 Python 之后,就有一些模塊默認(rèn)安裝了,這個(gè)稱之為“標(biāo)準(zhǔn)庫(kù)”,“標(biāo)準(zhǔn)庫(kù)”中的模塊不需要安裝,就可以直接使用。

如果沒有納入標(biāo)準(zhǔn)庫(kù)的模塊,需要安裝之后才能使用。模塊的安裝方法,我特別推薦使用 pip 來安裝。這里僅僅提一下,后面會(huì)專門進(jìn)行講述,性急的看官可以自己 google。

使用 math 模塊

math 模塊是標(biāo)準(zhǔn)庫(kù)中的,所以不用安裝,可以直接使用。使用方法是:

>>> import math

用 import 就將 math 模塊引用過來了,下面就可以使用這個(gè)模塊提供的工具了。比如,要得到圓周率:

>>> math.pi
3.141592653589793

這個(gè)模塊都能做哪些事情呢?可以用下面的方法看到:

>>> dir(math)
['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

dir(module)是一個(gè)非常有用的指令,可以通過它查看任何模塊中所包含的工具。從上面的列表中就可以看出,在 math 模塊中,可以計(jì)算正 sin(a),cos(a),sqrt(a)......

這些我們稱之為函數(shù),也就是在模塊 math 中提供了各類計(jì)算的函數(shù),比如計(jì)算乘方,可以使用 pow 函數(shù)。但是,怎么用呢?

Python 是一個(gè)非常周到的姑娘,她早就提供了一個(gè)命令,讓我們來查看每個(gè)函數(shù)的使用方法。

>>> help(math.pow)

在交互模式下輸入上面的指令,然后回車,看到下面的信息:

Help on built-in function pow in module math:

pow(...)
    pow(x, y)

    Return x**y (x to the power of y).

這里展示了 math 模塊中的 pow 函數(shù)的使用方法和相關(guān)說明。

  1. 第一行意思是說這里是 math 模塊的內(nèi)建函數(shù) pow 幫助信息(所謂 built-in,稱之為內(nèi)建函數(shù),是說這個(gè)函數(shù)是 Python 默認(rèn)就有的)
  2. 第三行,表示這個(gè)函數(shù)的參數(shù),有兩個(gè),也是函數(shù)的調(diào)用方式
  3. 第四行,是對(duì)函數(shù)的說明,返回 x**y 的結(jié)果,并且在后面解釋了 x**y 的含義。
  4. 最后,按 q 鍵返回到 Python 交互模式

從上面看到了一個(gè)額外的信息,就是 pow 函數(shù)和 x**y 是等效的,都是計(jì)算 x 的 y 次方。

>>> 4**2
16
>>> math.pow(4,2)
16.0
>>> 4*2
8

特別注意,4**24*2 是有很大區(qū)別的。

用類似的方法,可以查看 math 模塊中的任何一個(gè)函數(shù)的使用方法。

關(guān)于“函數(shù)”的問題,在這里不做深入闡述,看管姑且按照自己在數(shù)學(xué)中所學(xué)到去理解。后面會(huì)有專門研究函數(shù)的章節(jié)。

下面是幾個(gè)常用的 math 模塊中函數(shù)舉例,看官可以結(jié)合自己調(diào)試的進(jìn)行比照。

>>> math.sqrt(9)
3.0
>>> math.floor(3.14)
3.0
>>> math.floor(3.92)
3.0
>>> math.fabs(-2)    # 等價(jià)于 abs(-2)
2.0
>>> abs(-2)
2
>>> math.fmod(5,3)    # 等價(jià)于 5%3
2.0
>>> 5%3
2

幾個(gè)常見函數(shù)

有幾個(gè)常用的函數(shù),列一下,如果記不住也不要緊,知道有這些就好了,用的時(shí)候就 google。

求絕對(duì)值

>>> abs(10)
10
>>> abs(-10)
10
>>> abs(-1.2)
1.2

四舍五入

>>> round(1.234)
1.0
>>> round(1.234,2)
1.23

>>> # 如果不清楚這個(gè)函數(shù)的用法,可以使用下面方法看幫助信息
>>> help(round)

Help on built-in function round in module __builtin__:

round(...)
    round(number[, ndigits]) -> floating point number

    Round a number to a given precision in decimal digits (default 0 digits).
    This always returns a floating point number.  Precision may be negative.

運(yùn)算優(yōu)先級(jí)

從小學(xué)數(shù)學(xué)開始,就研究運(yùn)算優(yōu)先級(jí)的問題,比如四則運(yùn)算中“先乘除,后加減”,說明乘法、除法的優(yōu)先級(jí)要高于加減。

對(duì)于同一級(jí)別的,就按照“從左到右”的順序進(jìn)行計(jì)算。

下面的表格中列出了 Python 中的各種運(yùn)算的優(yōu)先級(jí)順序。不過,就一般情況而言,不需要記憶,完全可以按照數(shù)學(xué)中的去理解,因?yàn)槿祟惣热灰呀?jīng)發(fā)明了數(shù)學(xué),在計(jì)算機(jī)中進(jìn)行的運(yùn)算就不需要從新編寫一套新規(guī)范了,只需要符合數(shù)學(xué)中的即可。

運(yùn)算符 描述
lambda Lambda 表達(dá)式
or 布爾“或”
and 布爾“與”
not x 布爾“非”
in,not in 成員測(cè)試
is,is not 同一性測(cè)試
<,<=,>,>=,!=,== 比較
| 按位或
^ 按位異或
& 按位與
<<,>> 移位
+,- 加法與減法
*,/,% 乘法、除法與取余
+x,-x 正負(fù)號(hào)
~x 按位翻轉(zhuǎn)
** 指數(shù)
x.attribute 屬性參考
x[index] 下標(biāo)
x[index:index] 尋址段
f(arguments...) 函數(shù)調(diào)用
(experession,...) 綁定或元組顯示
[expression,...] 列表顯示
{key:datum,...} 字典顯示
'expression,...' 字符串轉(zhuǎn)換

上面的表格將 Python 中用到的與運(yùn)算符有關(guān)的都列出來了,是按照從低到高的順序列出的。雖然有很多還不知道是怎么回事,不過先列出來,等以后用到了,還可以回來查看。

最后,要提及的是運(yùn)算中的絕殺:括號(hào)。只要有括號(hào),就先計(jì)算括號(hào)里面的。這是數(shù)學(xué)中的共識(shí),無需解釋。


總目錄   |   上節(jié):除法   |   下節(jié):寫一個(gè)簡(jiǎn)單的程序

如果你認(rèn)為有必要打賞我,請(qǐng)通過支付寶:qiwsir@126.com,不勝感激。

上一篇:xml下一篇:Pandas 使用 (1)