計算衣值式數學上很麻煩的事,我從國小就開始偷用電算器寫數學作業(? 到高中以後物理的計算更是要命,真希望那時可以帶工程計算機去考試,那如果這種無趣又複雜的事情交給電腦做呢? 還記得吧,電腦的原意是計算機!他在計算這方面可是專家呢,所以我們今天就試試看利用電腦來計算吧~
首先,我們開啟昨天教到的小黑框,你可以叫他小黑框、命令列等等的聽得懂就好,但還是建議知道他的全名,"Python 互動式介面" 有一點印象~
輸入看看 1+2
按下 Enter 看看結果
顯示出 3 了!正是 1+2 的答案!感覺超廢的對不對......這五歲就會了吧,但如果是這樣呢?264664851315164545 + 5165489456151561561646
這個手算就麻煩大了吧,但是電腦依然一個 Enter 就幫你算出來了呢,或許你覺的加法太簡單不算什麼,那我就再介紹其他的運算方式。
運算 | 運算子 | 範例 | 運算結果 |
---|---|---|---|
加法 | + | 1 + 2 | 3 |
減法 | - | 1 - 2 | -1 |
乘法 | * | 1 * 2 | 2 |
除法 | / | 1 / 2 | 0.5 |
次方 | ** | 2 ** 2 | 4 |
取餘 | % | 7 % 2 | 1 |
相信大家知道怎麼操作,自己玩玩看吧~ 用各種奇怪的數據讓電腦去算,看看可不可以算出來,如果不行,那他會顯示什麼?
試著計算出下列算式的答案。
1547854325 + 5658742356
5698742458 - 3256985421
1245874563 * 1245756985
3254698542 / 45235
2.535 ** 500
562 % 7
5 / 0
剛剛練習中的最後一行,如果不小心讓電腦進行 5/0
的運算,我們都知道除數不可為0,否則數學式將無意義,那電腦會怎麼應對呢? 它顯示出了這些文字,接著程式就被強迫停止了。
關於這段文字的解讀如下,這是直譯器幫你進行的文法檢查,他發現你出現了電腦無法接受的語法,所以提醒你哪裡錯了,請修改後再進行。
Traceback (most recent call last):
File "<stdin>", line 1, in <module> #在程式碼的第一行
ZeroDivisionError: division by zero #發現以零除法的錯誤:嘗試以零除
變數是在電腦科學中很基礎也很重要的概念,電腦中有記憶體,用來暫時儲存資料;有硬碟,用來長期儲存資料,這樣的架構賦予電腦不只計算的功能,同時還可以儲存數據資料,例如我們做了 562348 * 56435213
的計算,答案是 31736229160124,難道我們要把這一串數字抄在紙上嗎? 當然不用啊!!!存在電腦裡就好啦,我們改成以下的方式來下命令
x = 562348 * 5643521
接著我再輸入 print(x)
將 x 內所存的內容顯示出來
從現在開始到程式被關掉為止,x 就代表剛剛計算完那串亂七八糟的答案,不需要自己記下來即可利用電腦的記憶體做儲存,要用到時再隨時取出使用即可。
這裡有一個需要特別注意的概念,這邊的等於符號功用是作為指定運算子,也就是等號右邊的東西會存進等號左邊的變數,注意喔!這是不能交換的,如果左右交換電腦就會回報錯誤,這被稱為左值(l-value)指派。
若改寫成562348 * 5643521 = x
電腦回報 SyntaxError: can't assign to operator
語法錯誤:運算子無法指派。
因為這樣寫左側是一個常數,不能儲存資料,而我們卻用 = 嘗試進行指派,所以電腦就回報錯誤。
預測下列程式碼執行完後 x 內的值為何?
x = 1
x = x + 3
y = 20
x = y
答案是 20,有懂這部分嗎?
簡單的數學運算搞不好算盤都可以算的比較快,但如果式複雜的運算,透過電腦就會顯得非常有幫助,例如三角函數與平方根,要進行這類進階運算的話我們需要用到 Python 內建的函式庫,用一行程式碼即可使用 import math
。
剛剛的運算式基本運算,因此透過向列式的方法就可以求值,但 math 裡面的計算是用函式形式呈現,記得數學中函數的定義嗎 y = f(x),給定函數 f(x) 一個數,f(x) 會回應一個應變數 y,電腦中的函式也是利用這樣的方法,來個小範例,輸入
import math #意即引入 math lib
x = math.sin(30)
print(x)
先透過 math.sin() 計算 sin 數值,並將 sin() 回傳的應變數數值指定給 x 儲存,最後再把 x 顯示出來觀看結果。
我列出一些常用的 math 函式,更詳細的請參考 Python math
math函數 | 功能 | 範例 | 運算結果 |
---|---|---|---|
math.sin(Arc) | 取正弦數值 | math.sin(1.57) | 0.9999996829318346 |
math.cos(Arc) | 取餘弦數值 | math.cos(1.57) | 0.0007963267107332633 |
math.tan(Arc) | 取正切數值 | math.tan(3.14) | -0.001592654936407223 |
math.abs(x) | 取絕對值 | math.abs(-5) | 5 |
math.sqrt(x) | 開根號 | math.abs(5) | 2.23606797749979 |
到這邊,我們以一個小練習結束今天的教學,看看大家能不能利用電腦幫你計算下面這幾題複雜的計算呢?
請計算下列算式的運算結果。
(5 + 6) * 5 - 3
45464153131 * 35435465151354
√2135464541654165145646
2.5648^456
sin(147 degree)