# Python if
資訊之芽 梁安哲 2022/03/13
---
## 課程大綱 Outline
----
1. 課程回顧
2. 比較運算子
3. 邏輯運算子
4. 基本語法
5. 縮排
6. 花俏語法
---
## 課程回顧 Recap
----
### 輸出
```python=
print("萊納,你坐啊")
```
----
### 變數
```python=
someInteger = 10
someString = "A for apple, B for ball."
someBool = False
someFloat = 8.7
```
----
### 輸入
```python=
colossalTitan = input("城牆裡有幾隻超大型巨人?")
print("早上好馬萊,現在我有" + colossalTitan + "隻超大型巨人")
```
----
### Questions?
---
## 比較運算子 Comparison Operators
----
### 之前的運算子
``` python=
print(1 + 3 * 3) # ?
print("1" + "3" * 3) # ?
print(10 / 3) # ?
print(10 // 3) # ?
print(2 ** 5) # ?
```
----
```python=
print(1 + 3 * 3) # 10
print("1" + "3" * 3) # 1333
print(10 / 3) # 3.3333...
print(10 // 3) # 3
print(2 ** 5) # 32
```
----
### 如果我們想要做這樣的事情
艾蓮·葉卡:
梟他,將這個稱作"尤彌爾的詛咒"
十三年是始祖尤彌爾從力量覺醒到死去之間的時長
沒人擁有超越始祖尤彌爾的力量
只要接近這個時辰軀體就會衰弱...作為容器的使命就算完成了。
----
### 翻譯成白話
----
* 始祖尤彌爾的力量大於所有人的力量
* 繼承巨人之力的人不會活超過13年
----
### 要怎麼讓電腦聽懂呢
```python=
powerYmir = 9999
powerEren = 100
statement1 = powerYmir > powerYmir # True
yearYmir = 13
yearEren = 13
statement2 = yearEren <= yearYmir # True
```
----
### 比較運算子 continued
| Operator | Name | Example |
| -------- |:------------------------ | ------- |
| == | Equal | x == y |
| != | Not equal | x != y |
| > | Greater than | x > y |
| < | Less than | x < y |
| >= | Greater than or equal to | x >= y |
| <= | Less than or equal to | x <= y
----
### 非常重要的重點
```python=
a, b, c, d = 1, 2, 3, 4
firstBool, SecondBool = a = b, c == d
print(firstBool) # ?
print(SecondBool) # ?
```
----
### = != == (重要)
```python=
a, b, c, d = 1, 2, 3, 4
firstBool = a = b
SecondBool = c == d
print(firstBool) # 2
print(SecondBool) # False
```
----
### Questions?
---
## 邏輯運算子 Logical Operators
----
### 如果我們還想要做這樣的事情
阿爾敏·亞魯雷特:
再次分成兩組搜索牆面,尤其是大門上方部位
無倫艾蓮何時出現賭塞牆壁都能做出對應的位置
任何時候都能看清並把握狀況的位置...
並且在時機到來前都能安全藏身的位置
----
### 一樣翻譯成白話
----
同時滿足三個條件的地方
* 隨時對應
* 把握狀況
* 安全藏身
----
### 要怎麼讓電腦聽懂呢
```python=
respondAnytime = True
niceView = True
safe = True
optimalLocation = respondAnytime and niceView \
and safe # True
```
----
### 邏輯運算子 continued
| Operator | Name | Example |
| -------- |:------------------------------------------------------- |:--------------------- |
| and | Returns True if both statements are true | x < 5 and x < 10 |
| or | Returns True if one of the statements is true | x < 5 or x < 4 |
| not | Reverse the result, returns False if the result is true | not(x < 5 and x < 10) |
----
### 善用括號
```python=
print(not True and False or True or False) # ?
print(not((True and False) or (True or False))) # False
```
----
### Questions?
---
## If
----
### 進擊的巨人again
米卡莎·阿卡曼:
如果你加入憲兵團,那麼我也會去
而要是你加入駐紮兵團,我也會照做
艾蓮,如果你不在我的身邊,一定會早死的。
----
### 再次翻譯成白話
----
艾蓮加入調查兵團->米卡莎加入調查兵團
艾蓮加入憲兵團->米卡莎加入憲兵團
艾蓮加入紮駐兵團->米卡莎加入紮駐兵團
(注意一個人一次只能加入一個兵團)
----
### 一樣我們想要讓電腦聽懂
```python=
erenJoinSurveyCorps = True
erenJoinGarrison = False
erenJoinMilitaryPoliceBrigade = False
if erenJoinSurveyCorps:
print("米卡莎加入調查兵團")
if erenJoinMilitaryPoliceBrigade:
print("米卡莎加入憲兵團")
if erenJoinGarrison:
print("米卡莎加入紮駐兵團")
```
----
### 那些空白是啥酷東西?
----
### 不合理的敘述
```python=
erenJoinSurveyCorps = True
erenJoinGarrison = True
erenJoinMilitaryPoliceBrigade = True
if erenJoinSurveyCorps:
print("米卡莎加入調查兵團")
if erenJoinMilitaryPoliceBrigade:
print("米卡莎加入憲兵團")
if erenJoinGarrison:
print("米卡莎加入紮駐兵團")
```
----
### 改成合理的敘述
```python=
erenJoinSurveyCorps = True
erenJoinGarrison = True
erenJoinMilitaryPoliceBrigade = True
if erenJoinSurveyCorps:
print("米卡莎加入調查兵團")
elif erenJoinMilitaryPoliceBrigade:
print("米卡莎加入憲兵團")
else:
print("米卡莎加入紮駐兵團")
```
----
### if elif else 三兄弟
```python=
income = int(input())
tax = 0
if income < 0:
tax = 0
elif income < 100:
tax = income * 0.1
elif income < 200:
tax = income * 0.2
elif income < 300:
tax = income * 0.3
else:
tax = income * 0.4
print(tax)
```
----
### Questions?
---
## 縮排 Code Indentation (重要)
----
```python=
computer = 10
user = int(input())
if user > 0:
if user > computer:
print("you win")
else:
print("you lose")
```
----
```python=
computer = 10
user = int(input())
if user > 0:
if user > computer:
print("you win")
else:
print("you lose")
```
----
### 有哪裡不同?
----
### 為什麼?
----
### 縮排是啥?
1. 縮排=程式碼開頭的空白。
2. Python使用縮排表示一個區塊的程式。
----
### 錯誤範例
``` python=
a, b = 3, 5
if a > b:
print("a is greater than b")
print("python ended")
```
----
### 正確範例
```python=
a, b = 3, 5
if a > b:
print("a is greater than b")
print("python ended")
```
----
### 縮排是啥? continued
3. 空白的個數為自訂,原則上為四個空白。
4. 同一個區塊內的空白數量需一致。
5. 區塊內不可空白(可用pass規避)
----
### 錯誤範例 again
```python=
if 5 > 2:
print("Five is greater than two!")
print("Five is greater than two!")
```
```python=
if 5 > 2:
#Five is greater than two!
```
----
### 正確範例 again
```python=
if 5 > 2:
print("Five is greater than two!")
print("Five is greater than two!")
```
```python=
if 5 > 2:
#Five is greater than two!
pass
```
----
### 現在是...練習時間
[neoj 3010](https://neoj.sprout.tw/problem/3010/)
----
### Nested if
```python=
a, b, c = 1, 2, 3
if c > b:
if c > a:
print("c is the biggest number")
```
----
### 代表我們可以這樣?
![](https://i.imgur.com/crqsI74.jpg)
----
### 請不要
----
### 要善用邏輯運算子
```python=
a, b, c = 1, 2, 3
if c > b and c > a:
print("c is the biggest number")
```
----
### 使用條件句的邏輯整理 (重要)
1. 開頭一定會有if,其他都是非必要的。
2. 上一個條件不符合時,繼續判斷下一個條件,使用elif
3. 所有條件都不符合時做某些事,使用else
4. if及else只會出現一次,但是可以有複數個elif
5. if一定會出現在第一個,else一定會出現在最後一個(但是不一定有else)
----
### Questions?
----
### 現在是...練習時間
[neoj 3011](https://neoj.sprout.tw/problem/3011/)
---
## 花俏語法 Advanced
----
### 冗長的程式碼
```python=
condition = False
a = 0
if condition:
a = 1
else:
a = -1
```
----
### 三元運算子 Ternary Operator
```python=
condition = False
a = 1 if condition else -1
```
---
### 現在是...作業時間
[neoj 3401](https://neoj.sprout.tw/problem/3401/)
[neoj 3402](https://neoj.sprout.tw/problem/3402/)
---
## Thanks
{"metaMigratedAt":"2023-06-16T20:30:31.488Z","metaMigratedFrom":"Content","title":"Python if","breaks":true,"contributors":"[{\"id\":\"9714f580-8aea-4592-8613-b6e594740378\",\"add\":8904,\"del\":2571}]"}