進度
- list
- input
- 迴圈
# 阿貓抓蛇
output lint:
- [今次社課の題目](https://hackmd.io/sfx4AcX4SW6WBt7mfUBMkw)
- [社長較豐富ㄉ高一筆記](https://hackmd.io/@KvN1027/rJRGPuDdO)
- [spyder安裝教學](https://codingonmac.blogspot.com/2017/08/windows-10-64bitsspyder-anaconda.html)
# **#在看這篇筆記前你需要知道的**
- 有問題要記得問
把這篇筆記當成工具書會比較好,想要摸熟一點please google :python教學、入門
然後#在python裡頭的意思是註解,因此#後面的東西不會被當成是程式碼的一部分
#### ex1:註解使用
```
#print("阿貓好矮")
```
輸出:
:::success
:::
對 什麼東西都沒有,原本應該要輸出阿貓好矮的那行程式碼沒有輸出任何東西,至於print()是什麼,後面會提到
---
# **#IDE**
### 何為IDE(整合開發環境)
IDE就是你開發Python這款程式語言的環境
陳軒正愛用的(?:IDLE /安裝python就會有了
好用:**Spyder** [/安裝教學](https://codingonmac.blogspot.com/2017/08/windows-10-64bitsspyder-anaconda.html)
業界:Visual Studio Code [/安裝教學](https://walker-a.com/archives/6231) (不是Visual Studio)
---
# **#print()讓程式可以講話**
### ex0:(整數)
>整數的第一位數不能為0,除非是只有0
```python
print(1231)
```
### ex1:(字串)
>字串外面要加引號""
```python
print("好耶,成功輸出一段文字ㄌ")
```
### ex2:(錯誤示範)
```python
print(我叫你輸出)
```
輸出:
:::danger
print(我叫你輸出!)
^
SyntaxError: invalid character '!' (U+FF01)
:::
### ex3:(不換行)
```python
print(1,end="")
print(2,end="")
```
### ex4:(各種玩法)
```python=
print(1,2,3,4) #1 2 3 4
print(1,2,3,4,sep=".") #1.2.3.4
```
---
# **#變數**
### 何為變數
可以把變數想像成是一張紙,可以在紙上寫下任何的文字,而每張紙都可以分成<font color="#f00">「整數」</font>、<font color="#f00">「浮點數」</font>、<font color="#f00">「字串」</font>以及<font color="#f00">「布林值」</font>。
>變數實際上是指電腦記憶體中ㄉ一段空間
- <font color="#dc143c">int(整數)</font>就是 只有數字並且沒有小數點的數
- ex:123、8787、0
- <font color="#ffa500">float(浮點數)</font>的意思是,帶有小數點的數這種都被稱為浮點數(float)
- ex:3.14、1.00、10.27、0.0
- <font color="#008000">str(字串)</font>則是指 像是Abcdefg#%&*^的這種非數字的字母ex:`i'm handsome@@`
- 字串需要被""包起來
- ex:"我好愛電研"、"卯咪最可愛惹<3333"、"01235.00"
- <font color="#0000ff">bool(布林值)</font>指的是True跟False
- ex: `x=True`

### 如何宣告變數
什麼4宣告qq?
就是告訴電腦,我要一張白紙來寫東東的拉!
宣告一個整數變數如下,變數的型態會根據裏頭的值自行改變
```python
a = 0
```
!變數名稱可以是任何英文字除了**保留字**
:::spoiler 查看變數命名規則
- 請銘記 變數有分成**整數、浮點數、字串、布林值**~
- 變數名稱的第一個字母必須是**英文、底線「_」**,不可以是數字或其他符號。
- 第一個字母之後的其他字元必須是**英文、底線「_」或是數字**,不可以使用其他符號
:::
#### ex0:宣告變數
```python=
apple = 88 #整數int
_beat = 128.5 #浮點數float
cat_520 = "meow" #字串str
dog01 = True #布林值
```
若是想知道這個變數是什麼類型,可以使用type()這個語法
#### ex1:type()
```python
a = 123
print(type(a))
```
### 賦值
有了一個變數之後,最重要的就是可以改變變數裏頭的值,也就是在紙上寫下想要的字
假設今天要將變數a加100,則寫起來會像這樣
```python=
a=0 #將a設為0
a=a+100 #將a+100
```
最後a的值就變為100了!
等號的左邊為目標 等號的右邊是要做運算的值
### 常用的運算子
| a+b | a-b | a*b | a/b | a%b | a**b |
| - | - | - | - | - | - |
|a加b |a減b |a乘b |a除b |a除b的餘數 | a的b次方 |
### 優先權

#### 簡寫
若是想要將a+100
除了a=a+100之外還有一種更快的寫法
```python=
a+=100
```
a乘100
```python=
a*=100
```
---
# **#input()讓程式可以讀取輸入的東西**
ex0:
```python=
a = input()
```
然後在旁邊的視窗就可以打東東ㄌ,輸入的東西會存到a裡面
- input的值預設是string(字串)型態
- *casting
### casting型別轉換
- int()
- 轉成整數
- 砍小數點後面的數
- 把純整數的字串轉成整數
- float()
- 轉成浮點數
- 整數後面補.00
- 把純數的字串轉成浮點數
- str()
- 轉成字串
- 什麼都可以轉ㄏㄏ
ex1:
```python=
a = "1231331"
a = int(a)
print(type(a))
```
ex2:
```python=
a = "1231.331"
a = float(a)
print(type(a))
```
# **#串列list**
### 何為list
- 就是一疊白紙,每個白紙的內容都是獨立的
- index引索值,就是頁碼的概念,從0開始的整數
- 第1位的index是0
- 如果是負的就是倒屬第X位

### 如何宣告list
```python=
list1 = [2,1320,151.123,"meow"]
```
### 輸出值
> 記得第一個值的index是0
```python=
print(list1) #輸出整個帶括號的串列
print(list1[0]) #輸出第1位
print(list1[-1]) #輸出倒數第1位
print(list1[-4]) #輸出倒數第4位(=輸出第1位)
```
### 神奇的操作
- **.append(x)**
- 在list後面新增x值
- **.len()**
- 取得list裡面有多少項目
- **.index(x)**
- 找到list裡面x值的index是多少
- 有重複的話就抓index最小的
- **.count(x)**
- 計算list裡面共出現多少次x
---
# **#if判斷式**
## 何為條件式
什麼是條件式?
條件式就像是一個問題,問題的答案<font color="#f00">只有True跟False</font>,而有了問題的答案,再配合判斷式以及迴圈,就能輸出你想要答案了~
**<font color="#ff1493">如果</font>購買金額>100,<font color="#ff1493">就</font>打九折。**
程式寫起來像這樣
```python=
if buy_price > 100 :
buy_price = buy_price*0.9
```
"buy_price > 100"這段就是我們的條件式
"if" 則是我們的判斷式
### if如果(?
簡單介紹一下,if判斷式裏頭會出現三個東西:if、elif、else
用中文介紹一下
**if** : 如果...就
**elif** : 不然...就
**else** : 如果上面的都沒有成立 就
每次出現if,就是一個獨立的判斷式。
把if這個判斷式想像成是一個選擇題,答案只能有一種,由上往下只要有一個觸發了,則後面的就都不會觸發
#### 語法:
```python=
if 條件式 :
就blabla
就blabla
elif 次要條件式 :
就blabla
就blabla
else :
就blabla
就blabla
```
- 如果條件式成立的話 "就blabla"的那邊就會觸發
- elif可以無限疊加,if跟else只能出現一次
- else跟elif可有可無
##### ex:
```python=
if a>100 :
print("a大於100")
elif a > 75 :
print("a大於75")
elif a > 50 :
print("a大於50")
else :
print("a小於50")
```
### 比較運算子
| > | < | >= | <= | == |!= |
| -------- | ------- | ------- | -------- | -------- |-------- |
|大於 | 小於 | 大於等於 | 小於等於 | 等於 | 不等於 |
### 邏輯運算子
當今天想要同時比較兩個條件式該怎麼辦,這時候就會需要用到邏輯運算子!
常用的邏輯運算子有以下幾類:
| and | or | not |
| -------- | -------- | -------- |
| 且 | 或者 | 非 |
有點模糊?

x跟y指的是兩邊的獨立的條件式
---
# **#for迴圈**
for迴圈是 **有指定次數的迴圈**,也可以理解為"執行幾次"
### 語法:
```python=
for 變數 in 指定範圍
要幹嘛blabla
要幹嘛blabla
要幹嘛blabla
```
- 指定範圍那邊通常為range
- range裡面有多少個值 就執行幾次,也可以用list代替
- ex:list=[1,1,1,1],則會重複執行"要幹嘛blabla"4次
- for迴圈會依序將每個項目指派給變數(第一行for旁邊的那個)
- 變數名稱通常會設為i、j、k
### range
range這個東西呢 就是創建一個數列串列
#### 語法:
```python=
range(起始,結尾,間隔)
```
- 間格可有可無
- 結尾實際上要再-1
#### ex1:
```python=
range(0,5)
```
則這個"range"裡面實際上長得像這樣
:::success
0
1
2
3
4
:::
> 注意上面所說的 結尾實際上要再-1
##### ex2:
```python=
range(0,10,2)
```
裏頭實際上長這樣
:::success
0
2
4
6
8
:::
> 這邊的range多了一個間格2 故裡面的值互相間隔為2
# **#while迴圈**
上面的for迴圈是指有指定次數的迴圈,而while迴圈則只要條件符合就會一直執行的迴圈。
而while迴圈會再迴圈內的最後一行程式執行完才會再次偵測條件是否符合,並決定是否繼續重複迴圈。
#### 語法:
```python=
while 讓迴圈一直執行的條件 :
要執行的blabla
要執行的blabla
要執行的blabla
```
#### ex1:
```python=
a = 0
while a<5 :
print("I'm still runing~~~~")
a=a+1
```
輸出:
:::success
I'm still runing~~~~
I'm still runing~~~~
I'm still runing~~~~
I'm still runing~~~~
I'm still runing~~~~
:::
#### ex2:
```python=
a = 0
while a<5 :
a=10000
print("runing")
```
輸出:
:::success
runing
:::
> while迴圈會在迴圈內的最後一行程式執行完才偵測是否繼續重複迴圈
# **#巢狀的概念**
基本上就是
```python=
for i in range(1,10):
for j in range(1,10):
print(i,"*",j,"=",i*j)
```
{"metaMigratedAt":"2023-06-16T11:58:51.056Z","metaMigratedFrom":"YAML","title":"阿貓抓蛇","breaks":true,"contributors":"[{\"id\":\"b6743cd0-913b-4eb4-a230-a2f4d5d4980b\",\"add\":7383,\"del\":1254}]"}