---
# System prepended metadata

title: 基本運算

---

# 基本運算
在撰寫程式時，經常會需要對資料進行一些數學上的運算處理，這時我們就會運用程式碼進行基本運算，將資料轉變成適合我們使用的狀態。
## 一、 運算子
運算⼦在程式中主要幫助我們進⾏數學的運算，數值⼤⼩⽐較和條件的判斷。
> 範例 
```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/