# 基本運算 在撰寫程式時,經常會需要對資料進行一些數學上的運算處理,這時我們就會運用程式碼進行基本運算,將資料轉變成適合我們使用的狀態。 ## 一、 運算子 運算⼦在程式中主要幫助我們進⾏數學的運算,數值⼤⼩⽐較和條件的判斷。 > 範例 ```python=1 print(3+6) ``` 上例中的 `3+6` ⻑得跟數學上常⾒的式⼦⼀樣,我們稱之為運算式, > 輸出 ``` 9 ``` 輸出的 `9` 則是運算式所得出的⼀個值。⽽式⼦裡的 `+` 就是這單元要介紹的運算⼦。 ## 二、 算術運算子 算術運算⼦的主要的⼯作就是進⾏數學上的四則運算。加減乘除的規則就跟數學課學得⼀模⼀樣。 | 加 | 減 | 乘 | 浮點數除法 | 整數除法 | 取餘數 | 次方 | 小括號 | |:---:|:---:|:---:|:-----:| :----: |:------:|:----:|:------:| | + | - | * | / | //| % | ** | () | > 範例 ```python=1 print(1 + 2) # 加法 print(10 - 5) # 減法 print(10 * 2) # 乘法 print(10 / 4) # 浮點數除法 print(10 // 4) # 整數除法的商 print(10 % 4) # 整數除法的餘數 print(2 ** 4) # 次方 print(1 + 2 * 3) # 小括號內先運算 print( (1 + 2) * 3 ) ``` > 輸出 ``` 3 5 20 2.5 2 2 16 7 9 ``` ### 1. 整數除法 整數除法不會將數字除到⼩數點後,⽽是求出⼀個商數和⼀個餘數。ex: 10 / 3 = 3…1 , 10 處以 3 的商是 3,⽽餘數是 1,所以 `10//3` 的輸出就是 `3` ,⽽ `10 % 3` 的輸出則是 `1` ### 2. 次方 2^4 = 16 在Python中以 `2**4` 表⽰,輸出為 `16` #### 注意:<font color="#f00"> :star:浮點數的計算有時會有誤差出現 例如: 1.0-0.8 可能不等於 0.2</font> > 範例 ```python=1 print(1.0-0.8) ``` > 輸出 ``` 0.1999999999999996 ``` ## 三、指派運算子 指派運算⼦在程式中⾮常常⾒,給變數賦予值的時候就會⽤到 例如: `a = 0` , 給 `a` 變數賦予值 `0` 另外介紹⼀個結合指派運算⼦和算數運算⼦的複合運算⼦ | 原始寫法 | 簡寫 | |:---------:|:------:| | x = x + 1 | x += 1 | | x = x - 1 | x -= 1 | | x = x * 1 | x *= 1 | | x = x / 1 | x /= 1 | ⽤法: x = x + 1 等同於 x += 1 此運算式能讓變數x的值加1 ## 四、 比較運算子 ⽐較運算⼦的主要功⽤就是⽐較兩個數字、字元,或是變數值的⼤⼩關係。 | 符號 | 概念| | :---------: | :-----------: | | == | 等於 | | != | 不等於 | | > | 大於 | | >= | 大於等於 | | < | 小於 | | <= | 小於等於 | ⽐較運算式輸出的是布林值(True or False),跟算術運算式不同: > 範例 ```python=1 print(1==1) print(1==2) ``` > 輸出 ``` True False ``` ## 五、 邏輯運算⼦ 邏輯運算⼦會以固定的⽅式決定輸出: | 名稱 | 邏輯概念 | | :--------: | :--------: | | and |兩個關係都是true, 輸出true, 否則輸出false| | or | 兩個中有⼀個關係是true, 輸出true, 否則輸出false| | not |關係是true, 輸出false, 關係是false, 輸出true| > 範例 ```python=1 print(True and True) print(True and False) print() print(True or False) print(False or False) print() print(not True) print(not False) ``` > 輸出 ``` True False True False False True ``` > 範例:( 邏輯運算⼦和⽐較運算⼦的合併使⽤ ) ```python=1 print((1>2) and (3>=2)) print((1>2) or (3>=2)) ``` > 輸出 ``` False True ``` # 課後測驗 ## 是非題 > 串接比較運算子是合理的語法。ex:1<2<3 正確答案: 是。 解析: 比較運算子串接是Python非常便利的語法,節省了分開寫成 "1<2 and 2<3" 的時間。 > print(3+6*12)的結果為108。 正確答案: 否。 解析: Python的基本運算同樣遵守數學的四則運算,先乘除,後加減。 > print(10>=3)跟print(3=<10)的結果都是True。 正確答案: 否。 解析: 要注意>=跟<=的等號都一定要放在後面。 > not((1>2)or(1<3))的布林值為False。 正確答案: 是。 解析: (1>2)的布林值為False,(1<3)的布林值為True,or只要兩邊的布林值有一邊是True,輸出的布林值就是True,not會把布林值反轉為False,因此輸出的布林值為False。 > a=1,b=12的時候,print(a=b)的結果為False。 正確答案: 否。 解析: 等於的比較運算子為"==",print(a==b)的結果才是False。"a=b"是將變數a的值指派給變數b。 > 當and兩邊的布林值有一個為False,and輸出的布林值就一定是False 正確答案: 是。 解析: and只要兩邊布林值有一個是False,在不經過其他處理的情況下,輸出的布林值一定是False。 > "2^2" 在Python中表示的是2的2次方。 正確答案: 否。 解析: "**" 是Python中平方的符號,二的二次方是 "2**2"。 > 經過 "x+=1" 這個運算式後,變數x的值比原本多了1。 正確答案: 是。 解析: "x+=1" 就是 "x=x+1" ,將x加上1的值重新指派給x,使x的值增加了1。 > 邏輯運算子and就算有一邊是空白的,只有一邊有布林值也能進行運算。ex:(1==1)and 正確答案: 否。 解析:and跟or兩邊都一定要有值才能進行運算。 > "%" 是求整數除法的商,而 "//" 是求整數除法的餘。 正確答案: 否 解析: "//" 是求整數除法的商,而 "%" 是求整數除法的餘。 ## 選擇題 > a=1 > a+=3 > b=a > print(b) > > 請問output是? > A. 1 > B. 3 > C. 4 > D. a 正確答案: C 解析: 第一行a被指派值1,之後第二行 "a+=3" 是對a指派a+3的值,所以a的值變為4,第四行b被指派a的值4,第五行則是輸出b的值,所以output的值就是變數b的值"4"。 >print(1<2>3) > > 請問output是? > A. 1<2>3 > B. True > C. False > D. syntax error 正確答案: C 解析: "1<2>3" 跟 "1<2 and 2>3" 是一樣的意思,左邊布林值為True,右邊布林值為False,and輸出的布林值為False > 下列運算式中,哪一個的值與其他三者相異? > A. 10//3 > B. 3\*3 > C. 3\*\*1 > D. 3%4 正確答案: B 解析: A選項求10除以3的商,而10除以3的商是3,餘是1。B選項是求3乘以3的值,而3乘以3是9。C選項是求3的1次方,而3的1次方是3。D選項是求3除以4的餘數,而3除以4的商是0,餘是3。這之中只有B選項的值是9,其他都是3。 > 下列運算式中,哪一個的布林值是True? > A. not(not(False)) > B. 1<2>-1<100>=45<=3 > C. 3/2>=3 > D. a=1, b=2, not(a==b) 正確答案: D 解析: A選項經過兩次not反轉,結果跟原本的布林值一樣是False。B選項只要耐心的兩兩比較,就會發現只有最右邊的 "45<=3" 是False,因為它們之間是用and連接,有一個False輸出結果就是False。C選項就比較簡單,3處以2是小於3的,所以結果是False。D選項變數a不等於b,經過not反轉,只有它的結果是True。 > print(0.3-0.2) > > 請問output為? > A.0.09999999999999998 > B.0.1 > C.True > D.False 正確答案: A 解析: 電腦在浮點數的計算有時會有誤差出現 ## 程式題 請寫一個 Python 程序,要求實現以下功能: 1. 請用戶輸入一個整數,並將其存儲在變量 x 中。 2. 請用戶輸入一個浮點數,並將其存儲在變量 y 中。 3. 計算 x 除以 y 的值,並將結果存儲在變量 z 中。 4. 將 z 四捨五入到小數點後兩位,並將結果存儲在變量 z 中。 5. 輸出 z 的值。 範例: 1. 輸入整數 10,輸入浮點數 3.14159,輸出 3.18 2. 輸入整數 100,輸入浮點數 2.5,輸出 40.00 3. 輸入整數 8,輸入浮點數 0.5,輸出 16.00 4. 輸入整數 4,輸入浮點數 0.1,輸出 40.00 5. 輸入整數 20,輸入浮點數 5.5,輸出 3.64 6. 輸入整數 6,輸入浮點數 1.5,輸出 4.00 注意: 輸入時,請按照上述要求輸入整數和浮點數,不要包含其他字符或空格。 輸出時,請保留兩位小數。 變量名可以自行命名,但請注意代碼可讀性。 ### 參考資料 https://openhome.cc/zh-tw/python/