廣告
| 數值運算 |
|
|
|
| 作者是 Victor | |||
| 週三, 11 二月 2009 21:09 | |||
Python的數值運算Python 在需要數學計算的領域受到相當程度的歡迎,我們可以猜想,Python的數值運算能力相當強大?是的,Python的數值運算的確非常強大,本身就有良好的體質,在加上第三方函式庫的加持,Python在這方面可以說是數學運算的最佳選擇,現在就讓我們來介紹Python有的運算能力。 數字的表示Python有幾種值,首先是整數,也就是沒有帶小數點的數字,例如
:0、10、123、-999、1234567這些都算是整數,而Python在數值上一個很大的優勢就是,整數基本上是沒有限制位數的,也就是,不管你是999999999999999999999還是1234567890123456789,只要超過一定範圍,Python都會幫你轉換成"長整數",也就是對Python而言沒有限制位數的整數,如此一來你就可以進行任何你想要的天文數字運算而不用受到語言限制。 數值運算接著讓我們來介紹Python的基本數值運算,當然最基本的就是+、-、*、/、%,分別是加、減、乘、除、求餘數,基本上跟其它程式語言差不多,我們在下面介紹 : + - 加減運算,例如 : 123+456、abc+1、100+money等等,相當簡單易懂。 * 乘法運算,例如 : 7*5、times*10、money*0.5等等。 / 除法運算,例如 : member / 10、10/5、10/0.3等等,但是請注意,除以0會引發錯誤,現在請先記得不要除以0就好。 % 求餘數運算(模除),例如 : 我想求 100是不是2的倍數,我可以用100 %
2,看餘數是不是0,是0的話就表示可以整除,也就是2的倍數 運算結果小數點的問題
如果上面你學會如何運算,也自己試試看之後,你可能會發現一個問題,就是運算結果怎麼跟我想的不一樣,例如10/3應該會是3.33333....,可是答案卻顯示3,原因很簡單,
這部份Python跟其它很多語言都一樣,會看兩個運算子的類形 : 形別轉換問題# 數字A設為整數100 NumberA = 100 # 數字B設為整數 NumberB = 30 # 這裡印出來的結果是3 print NumberA / NumberB 上面這段程式碼示範兩個整數相除,這時你可能想到一個問題,那如果我想要保留運算結果的小數點怎麼辦?
方法很簡單,就是先把其中一個數轉換成浮點數,依照上面的規則,另一個整數其實也會被轉換成浮點數,如此一來答案就會是浮點數,而且保留小數的部份,如果是一個變數和一個常數做運算很簡單,例如
NumberA / 30.0,但是上面兩個都是變數阿! 那該如何是好? Python這時就有提供轉換數值形別的函數 : # 數字A設為整數100 NumberA = 100 # 數字B設為整數 NumberB = 30 # 這裡印出來的結果是3.33333333333 print float(NumberA) / NumberB # 這裡印出來的結果也是3.33333333333 print NumberA / float(NumberB) # 這裡印出來的結果還是3.33333333333 print float(NumberA) / float(NumberB) 事實上你的float轉換加在其中一個就可以了,因為照上面寫的規則,只要有一個浮點,另一個會被自動轉成浮點來計算,當然,你也可以例用int函數,將小數點的部份捨去轉變成整數 : # 圓周率 PI = 3.14159 # 我們只想知道它整數的部份,所以把它轉成整數再輸出 # 因此輸出的結果是 3 print int(PI) Python與其它語言不同的數值運算上面的概念大至上和其它的語言都大同小異,現在我們要介紹Python和其它語言不太一樣的運算 : **和// ** 乘方運算,也就是某個數的幾次方的意思,例如你想算2的5次方,一般打字是打2^5,而在Python裡要寫2 ** 5,而它的好處還有,小數點一樣也可以運算,所以假設我們要計算 16 開平方等於多少,就可以這樣寫 16 ** 0.5,相當方便的一個運算語法。 // 捨去小數的除法運算,也就是就算照上面的規則,兩個浮點數相除,它還是會幫你捨去小數,例如10.0 // 3.0結果會是3.0,它幫你捨去小數了,當然,別忘了,這也算是除法,都一樣除0就會出錯的。 運算的優先順序相信大家在小學時都有學過先乘除後加減的概念,是的,在程式語言,例如Python也是如此,有這樣的概念,像 1 + 2 * 3答案會是7,它會依照運算的優先順序幫你決定哪些先算,但是我並不打算列出那樣的順序表,因為我認為記那樣的東西沒有什麼價值,因為程式除了給機器看還要給人看,當然是越清楚越好,所以遇到這種情況,不管三七二十一,一律都用()把我想讓它先算的部份括起來,這樣子好處就是你不用記什麼優先順序,括號就對了,二來這樣看的人也一目了然知道哪些先算。 從數學公式到Python運算語法事實上,任何公式都可以用程式語言寫出來,這裡我們示範將一個簡單的公式用Python寫出來,這個公式就是加總的公式 : # 首項 n = 1 # 末項 m = 100 # 用Python寫的加總公式 result = ((m + n) * (m - n + 1)) / 2 # 將運算結果印出來,答案是5050 print result 是的,就是那麼簡單,這樣的範例沒什麼難度,我們找來稍微複雜一點的數學公式 :
一元二次方程式解公式 分子 / 分母 像這樣,只是改寫成公式的運算,還有記得想要優先運算全部加上() (分子) / (2 * a) 接下來我們開始轉換分子 ((b ** 2) - (4 * a * c)) ** 0.5 所以組合起來就是 -b + (((b ** 2) - (4 * a * c)) ** 0.5) 分子就完成了,因此整個式子合起來就是 (-b + (((b ** 2) - (4 * a * c)) ** 0.5)) / (2 * a) 這樣的公式有點長,當公式過長時,我們可以考慮將公式拆成幾個變數湊起來 # x^2 -3x + 2公式裡的變數a, b, c a = 1 b = -3 c = 2 # 分子部份 n = -b + (((b ** 2) - (4 * a * c)) ** 0.5) # 分母部份 m = 2 * a # 計算結果 result = n / m # 印出結果,其中一個解答案等於2 print result
|
核心是 Joomla!. Designed by: Free Joomla Theme, whois protect. Valid XHTML and CSS.


