iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 3
0

計算衣值式數學上很麻煩的事,我從國小就開始偷用電算器寫數學作業(? 到高中以後物理的計算更是要命,真希望那時可以帶工程計算機去考試,那如果這種無趣又複雜的事情交給電腦做呢? 還記得吧,電腦的原意是計算機!他在計算這方面可是專家呢,所以我們今天就試試看利用電腦來計算吧~

首先,我們開啟昨天教到的小黑框,你可以叫他小黑框、命令列等等的聽得懂就好,但還是建議知道他的全名,"Python 互動式介面" 有一點印象~

輸入看看 1+2 按下 Enter 看看結果
https://ithelp.ithome.com.tw/upload/images/20190919/20120282GCuTLU033s.jpg

顯示出 3 了!正是 1+2 的答案!感覺超廢的對不對......這五歲就會了吧,但如果是這樣呢?
264664851315164545 + 5165489456151561561646

https://ithelp.ithome.com.tw/upload/images/20190919/20120282UeBmiCo5S5.jpg

這個手算就麻煩大了吧,但是電腦依然一個 Enter 就幫你算出來了呢,或許你覺的加法太簡單不算什麼,那我就再介紹其他的運算方式。

運算 運算子 範例 運算結果
加法 + 1 + 2 3
減法 - 1 - 2 -1
乘法 * 1 * 2 2
除法 / 1 / 2 0.5
次方 * 2 ^ 2 4
取餘 // 7 // 2 1

相信大家知道怎麼操作,自己玩玩看吧~ 用各種奇怪的數據讓電腦去算,看看可不可以算出來,如果不行,那他會顯示什麼?

練習 3-1

試著計算出下列算式的答案。

1547854325 + 5658742356
5698742458 - 3256985421
1245874563 * 1245756985
3254698542 / 45235
2.535 ** 500
562 // 7
5 / 0

運算例外

剛剛練習中的最後一行,如果不小心讓電腦進行 5/0 的運算,我們都知道除數不可為0,否則數學式將無意義,那電腦會怎麼應對呢? 它顯示出了這些文字,接著程式就被強迫停止了。
https://ithelp.ithome.com.tw/upload/images/20190919/20120282RLW5a9OroM.jpg

關於這段文字的解讀如下,這是直譯器幫你進行的文法檢查,他發現你出現了電腦無法接受的語法,所以提醒你哪裡錯了,請修改後再進行。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module> #在程式碼的第一行
ZeroDivisionError: division by zero #發現以零除法的錯誤:嘗試以零除

變數 Variable

變數是在電腦科學中很基礎也很重要的概念,電腦中有記憶體,用來暫時儲存資料;有硬碟,用來長期儲存資料,這樣的架構賦予電腦不只計算的功能,同時還可以儲存數據資料,例如我們做了 562348 * 56435213 的計算,答案是 31736229160124,難道我們要把這一串數字抄在紙上嗎? 當然不用啊!!!存在電腦裡就好啦,我們改成以下的方式來下命令

x = 562348 * 5643521

接著我再輸入 print(x) 將 x 內所存的內容顯示出來
https://ithelp.ithome.com.tw/upload/images/20190919/20120282AoMVzAgIlX.jpg

從現在開始到程式被關掉為止,x 就代表剛剛計算完那串亂七八糟的答案,不需要自己記下來即可利用電腦的記憶體做儲存,要用到時再隨時取出使用即可。

賦值:左值和右值

這裡有一個需要特別注意的概念,這邊的等於符號功用是作為指定運算子,也就是等號右邊的東西會存進等號左邊的變數,注意喔!這是不能交換的,如果左右交換電腦就會回報錯誤,這被稱為左值(l-value)指派

若改寫成
562348 * 5643521 = x

https://ithelp.ithome.com.tw/upload/images/20190919/20120282Nq4ypsaezC.jpg

電腦回報 SyntaxError: can't assign to operator 語法錯誤:運算子無法指派。
因為這樣寫左側是一個常數,不能儲存資料,而我們卻用 = 嘗試進行指派,所以電腦就回報錯誤。

練習 3-2

預測下列程式碼執行完後 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 顯示出來觀看結果。

https://ithelp.ithome.com.tw/upload/images/20190919/20120282SKRUnlPJiu.jpg

我列出一些常用的 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

到這邊,我們以一個小練習結束今天的教學,看看大家能不能利用電腦幫你計算下面這幾題複雜的計算呢?

練習 3-3

請計算下列算式的運算結果。

(5 + 6) * 5 - 3
45464153131 * 35435465151354
√2135464541654165145646
2.5648^456
sin(147 degree)

上一篇
Day2-嗨 Python! 環境準備
下一篇
Day4-親和數,用自己找超累的耶
系列文
原來電腦可以這樣用!? 果蠅也懂的程式語言教學30

尚未有邦友留言

立即登入留言