---
# System prepended metadata

title: 5-1 關係&邏輯運算子
tags: [chapter 5, Python]

---

###### tags: `chapter 5` `Python`
# 5-1 關係&邏輯運算子 #

## 關係運算子 ##

寫程式時很常需要進行資料比對，不論是字串資料還是數值資料，所有的程式幾乎無法避免比較的過程，將兩者進行比對的工具我們稱為`關係運算子`，在數學上就是`<`、`>`等符號。以下列出所有python的關係運算子以及其功能。

![](https://i.imgur.com/QNR9ROP.jpg)


基本上，關係運算子是用來判斷一件事使否成立，假設你給電腦`a > b`，他會告訴你這件事是成立還是不成立。如果今天a是20且b為10，那電腦會告訴你`True`，若兩者對調，則電腦會回傳`False`。


如果我們今天要判斷兩個數是否相等，那我們可以這麼做
```python
a = 10
b = 10
print(a == b)

# True
```

關係運算子就對應著現實世界的是非題，所有的是非題都可以用關係運算子來表示，不論他有多複雜，有幾個條件，當出現一次要判斷多個條件的時候，我們可以搭配邏輯運算子來進行判斷。

## 邏輯運算子 ##

邏輯運算子是指電路學裡的邏輯閘(and、or、not)，通常會和多個條件判斷式一起使用。

`and`：相當於'且'，兩邊的事件必須同時成立(True)，否則結果為不成立(False)。
例如：如果`你是男生`且`滿18歲`了，那你必須去當兵！

![](https://i.imgur.com/AobKHGC.jpg)


`or`：相當於'或'，兩邊的事件最少要有一件成立(True)，否則結果為不成立(False)。
例如：成功需要的是擁有`積極努力向上的心`或`一個有錢的爸爸`。
![](https://i.imgur.com/72w9fHZ.jpg)

`not`：和上述兩個較不同，`not`會將條件判斷式的結果顛倒。
例如：將`2 > 3`的結果`False`轉變為`True`
![](https://i.imgur.com/Eo4YoLI.jpg)

在電腦世界，我們通常會將`True`表示為`1`，`False`表示為`0`。



## 範例 ##

有了上述兩個工具，我們可以組合稍微複雜一點的條件判斷式囉！

* 範例$1$
```python=
a = True
b = False
c = False
print(a != b and b == c)

# True
```

* 範例$2$
```python=
a = True
b = False
c = True
print(a != b and b == c and a != b)

# False
```