官术网_书友最值得收藏!

1.4.2 算術運算和預定義函數

Python包含基本的算術運算符,例如+-*(乘)、/(除)和**(冪運算)。

Python使用雙星號**表示求一個數的冪。

例如,a**2表示“a的平方”(符號a^2在其他一些數學軟件中表示平方,但在Python中具有完全不同的含義)。

與標準數學符號不同,Python中的乘法必須包含乘法符號。嘗試輸入以下命令:

(2)(3)
a = 2; a(3)
3a
3 a

每個命令都會產生一條錯誤消息。但是,它們都不會生成這樣的消息:“你忘了一個'*'!”根據Python使用的求值規則,這些表達式沒有意義。Python不知道你試圖表達什么,所以它無法確切地告訴你出了什么問題。不妨研究這些錯誤消息;你可能會再次遇到它們。附錄D描述了這些錯誤消息和其他常見的錯誤。

算術運算的優先級(排序)與常識相符。

使用圓括號可以改變運算符的優先級。

與數學教科書不同,在Python中,只能使用圓括號改變優先級排序。方括號和花括號則用于其他目的。前面已經看到,圓括號還有另一種含義:將函數的參數括起來。此外,圓括號還有第三種含義:指定元組。Python根據上下文來確定要使用哪種含義。

例如,如果要使用數字,你可能會輸入1/2*np.pi(原生Python不知道π的值,但NumPy知道)。試試看。

問題出在哪里?為什么?插入括號可以修復表達式的問題。稍后我們會遇到其他類型的運算符,如比較和邏輯運算符,它們也有一定的優先級排序。你可能并不想記住所有運算符的優先級,不過,你可以自由地使用括號來準確地表達你的意圖。

為了熟悉Python的算術運算,試回答下面兩個語句解決了什么樣的著名數學問題,并檢查Python能否正確處理:

a, b, c = 1, -1, -2
(-b + np.sqrt(b**2 - 4*a*c))/(2*a)

前面曾介紹過,np.sqrt是一個函數的名稱,Python在啟動時是無法識別它的,但一旦導入NumPy模塊后,它就變得可用了。當Python遇到第二行中的表達式時,它會執行以下操作。

(1)通過用數值替換變量并執行算術運算來計算np.sqrt函數的參數的值,參數是指函數名后圓括號內的所有內容(參數本身可能包含函數)。

(2)中斷表達式的計算,并執行一段名np.sqrt的代碼,將步驟(1)中找到的結果傳遞給該代碼。

(3)用np.sqrt返回的值替換表達式。

(4)按照正常程序完成表達式的求值。

如何知道哪些函數可用?參見1.2.3小節:在IPython控制臺提示符下輸入dir(np)dir(__builtins__)

Python和NumPy預先定義了若干符號。這些符號不需要任何參數或括號。試試np.pi(常數π)、np.e(自然對數的底數)和1j(虛數單位)。另外,NumPy還提供標準的三角函數,但在使用時要注意:

np.sinnp.cosnp.tan等三角函數中,參數的角度都采用弧度。

主站蜘蛛池模板: 安吉县| 乌拉特中旗| 长葛市| 房产| 乌拉特中旗| 连南| 洞口县| 蓬安县| 施甸县| 胶南市| 河东区| 乌兰浩特市| 山阴县| 泸定县| 江西省| 五莲县| 临江市| 湘乡市| 于都县| 昌都县| 太仓市| 黄陵县| 龙南县| 襄城县| 儋州市| 新宾| 微博| 石景山区| 贵南县| 勐海县| 抚宁县| 宜君县| 航空| 临夏市| 宁强县| 河池市| 陆良县| 米易县| 嘉黎县| 大荔县| 若尔盖县|