# NKUST ITC 108-1 Python[2]
###### [https://python-slide.macs1207.dev](https://python-slide.macs1207.dev)
###### 2019/10/22
###### tags: `NKUST ITC` `Python 社課`
[TOC]
---
## [Github](https://github.com/macs1207/python-tutorial)
----
## 今天進度0%
- 如果我單身,則我沒女友
- Only Loooooop
- Loooooop in Loooooop
- Function
---
## 如果我是單身,則我沒有女朋友
- Decision Making
做決策的方式,俗稱判斷式
----
### if & else
```python=
status = True
if (status):
print("ITC")
else:
print("NOT ITC")
```
----
[OREO](https://i.imgur.com/LO4kFto.png)
> [圖源](https://www.reddit.com/r/Animemes/comments/abj521/wouldnt_wanna_eat_100_of_these_bad_boys/)
----
### 如果這樣寫
```python=
re = 5
if re >= 5:
print("OREREREREREO")
if re >= 4:
print("OREREREREO")
if re >= 3:
print("OREREREO")
if re >= 2:
print("OREREO")
else:
print("OREO")
```
<span>
?_? 這不是我要的結果R
<!-- .element: class="fragment" data-fragment-index="1" --></span>
----
### else if不能用?
- 在Python裡這樣寫 -> elif
```python=
e = 5
if e >= 5:
print("OREREREREREO")
elif e >= 4:
print("OREREREREO")
elif e >= 3:
print("OREREREO")
elif e >= 2:
print("OREREO")
else:
print("OREO")
```
---
## Only Loooooop
- while
- for
----
### while
- 未知執行次數
```python=
while 判斷式:
do something
```
### for
- 已知執行次數
```python=
for i in range(初始值, 終止值, 更新值):
do something
```
----
### 1.基本操作
- while
```python=
while True:
print("ITC!!!")
```
- for
```python=
for i in range(0, 10, 1):
print(i)
for i in range(10):
print(i)
```
----
### 2.檔案操作法
- for "for"
```python=
f = open(filename, "r")
for i in f:
print(i) # 逐行讀取
```
----
### Loop V.S. Decision Making
- 如果達成條件
- Loop會不斷執行
- Decision Making只執行一次
- Like This
```python=
status = True
if status:
print("!!!")
else:
print("???")
while status:
print("...")
```
----
### How to solve?
- 使條件不成立
- Like This
```python=
status = True
while(status):
print("NKUST ITC")
status = False
```
- or insert if-statement to loop
```python=
status = True
while(status):
print("NKUST ITC")
if(status):
break
```
----
### Wait...what is break???
- 控制流程ㄉ好幫手
- 「break、continue、pass」以上都是好幫手
- 而他們使用恰當是具有相當大的好處滴
- break:跳出或中斷
- continue:跳過且繼續
- pass:Nothing Happen
----
### 484太難懂ㄌ?
- 我們直接來看個範例好ㄌ
```python=
for i in range(10):
print(i)
for i in range(10):
if (i == 8):
break
print(i)
```
----
### continue怎麼用
```python=
for i in range(10):
print(i)
for i in range(10):
if (i == 8):
continue
print(i)
```
----
### 前面提到pass,那是啥
- 佔位仔,舉例
1. 修了一堂人很多的課,太晚到會沒位置。
2. 進教室看到一個空位
3. 正要坐下去時,旁邊的人說:同學,這裡有人坐喔
4. 我:?????
<span>
- 這種人早晚會被打
<!-- .element: class="fragment" data-fragment-index="1" --></span>
----
- 重來一次
1. 修了一堂人很多的課,太晚到會沒位置。
2. 進教室看到所有座位都放了東西但沒坐人
3. \*\*沒有人\*\*:
4. 我:直接回家
- 此時,座位上放著的東西就是pass,單純用來佔位子
----
### 怎麼用呢
```python=
sleep = True
if sleep:
print("zzzzz")
else:
pass # 醒著也什麼都不做
```
---
## Loop in Loop
----
### What is loop in loop
- 當一個迴圈需要第二個 第三個 ... 第N個的時候
- 蛤?你在工三小?
- 算ㄌ...讓我們直接看ㄍ範例
----
### (應該不是)金字塔三角形
- 當今天要印出「5x5的金字塔」,你會怎麼寫?
- 長得像這個鳥樣

----
- 寫法1
```python=
print(" *")
print(" **")
print(" ***")
print(" ****")
print("*****")
```
----
- 寫法2
```python=
counter = 4
for i in range(5):
if i < counter:
print(" ", end='')
else:
print("*", end='')
counter -= 1
print()
for i in range(5):
if i < counter:
print(" ", end='')
else:
print("*", end='')
# ... 同上,以下省略
```
- 以上的寫法我想到頭很痛
----
- 寫法3
```python=
layer = int(input("你要幾層的三角形ㄋ:"))
for i in range(layer):
for j in range(layer - (i + 1)):
print(" ", end='')
for j in range(i + 1):
print("*", end='')
print()
```
----
- 給新手ㄉ練習題目
- 讀檔輸入,輸出對應數字的圖形
- 像這樣
```
# 輸入檔案:指定圖形 行寬或列高 & 指定圖形: 1:方形 2:三角形 3:菱形
# File:1 3
# 2 3
# 3 5
***
***
***
*
***
*****
*
***
*****
***
*
```
----
### 有人想知道這個怎麼印
```
*
***
*****
```
- 這樣印
```python=
layer = int(input("你要幾層ㄋ:"))
for i in range(layer):
for j in range(layer - i - 1):
print(" ", end='')
for j in range(2 * i + 1):
print("*", end='')
print()
```
----
- 練習題答案在[Github CH3](https://github.com/chrisliu430/python-tutorial/tree/master/ch3/for_in_for.py)喔
---
## Function(函式)
----
### 為什麼需要這個,我討厭數學QQ
- 提高程式碼的可重用性
- 方便維護
- 程式碼簡潔
----
> 你說簡潔就簡潔喔
> [name=沒有人]
----
## 舉例
- 又是BMI
```python=
def bmi(height, weight):
bmi = weight / ((height / 100) ** 2)
return "BMI是: {}".format(bmi)
people = [
{
"height": 180,
"weight": 90
},
{
"height": 120,
"weight": 20
}
]
for i in range(len(people)):
print(bmi(people[i]["height"], people[i]["weight"]))
```
----
- 在Python中,不須指定函式的回傳型別
- 不回傳的話,不寫return就行
----
### 練習
- 輸入要做什麼事,執行指定的函式
- 沒有設計動作的話,輸出"我不會"之類的東西
- 像這樣
```
請輸入動作: 說早安
輸出: 早安
請輸入動作: 睡覺
輸出: 我不會QQ
```
- 提示: 函式也可以存在dict或list中
----
- 練習題答案在[Github CH3](https://github.com/macs1207/python-tutorial/blob/master/ch3/action_example.py)喔
---
## 專案建議???
- 沒有想到可以做甚麼ㄉ,可以參考以下
- Discord Bot 狼人殺
- 可串Dialogflow
- 高科美食地圖
- 高科聊天室(參考Dcard抽卡)
----
### 接續ㄏ
- 打磚塊
- 自動打磚塊也能做
- 俄羅斯方塊
- 冷氣遙控器
----
### 消夜文
###### 一碗濃湯,美味的濃湯,香甜可口,一碗只要25,心動嗎?來買呀!

---
## Discord
- [https://discord.gg/hmUeXeH](https://discord.gg/hmUeXeH)

----
## Telegram
- [https://t.me/kuasitc](https://t.me/kuasitc)

----
## 作者
- 社長 [Macs](https://github.com/macs1207)
- 總務 [C.H](https://github.com/chrisliu430)
----
## 參考資料
- [Python-100-Days](https://github.com/jackfrued/Python-100-Days)
- [Wikipedia](https://zh.wikipedia.org)
- [成大X-Village教材](https://www.facebook.com/pages/category/Education/X-Village-423736361424301)
{"metaMigratedAt":"2023-06-15T00:47:26.996Z","metaMigratedFrom":"Content","title":"NKUST ITC 108-1 Python[2]","breaks":true,"contributors":"[{\"id\":\"0543727d-0e35-443a-a198-84223cf6d534\",\"add\":4302,\"del\":712},{\"id\":\"478dc5a5-55d6-4469-91c3-56c4ab9c7543\",\"add\":3419,\"del\":1146}]"}