---
# System prepended metadata

title: Python tutorial   by.yoyolee49

---

# Python tutorial   by.yoyolee49
## 小提示
下面的教學都會搭配一個小題目用來練習用
我們給的是zerojudge上的題目
所以要先辦個帳號喔（用google帳號就能辦ㄌ）
那如果你的程度夠好可以在我們給的網站上找更難的題目做！

## 介紹python是啥

==python==(n.)
/ˈpʌɪθ(ə)n/

:snake: 
a large heavy-bodied non-venomous snake occurring throughout the Old World tropics, killing prey by constriction and asphyxiation.
出現於亞馬遜從林裡的一種蟒蛇


## 介紹程式語言python是啥
python 是程式語言的一種
出名於其函式庫，真的是超多模組能用的，
又因為最近AI新起所以變成大家都想學的東西！！ 

### 與c++的差別
c++和python比起來難學很多，因為處理的東西比python多
可是相對地跑起來比python==快很多==
所以python拿來比賽真的很虧！！！
![](https://i.imgur.com/YHp1Dug.jpg)

可愛的貓咪:arrow_heading_up: 
## 寫你的第一行程式碼！！
```=python
print("hello world!!")
```
這個 :arrow_heading_up: 的用途就是讓你的程式顯示出hello world的字樣喔！！是不是超帥的！！

[小試身手！](https://zerojudge.tw/ShowProblem?problemid=a001)

>:::spoiler 為何要輸出hello world不輸出別的啊？
>
>大家學一個程式語言都會先讓他吐這串的
>這是工程師的浪漫懂不懂！！！
>![](https://i.imgur.com/gcvpMoB.jpg)

## 資料型態
python 的資料型態 ==不用宣告== !!!!!!
想知道宣告資料型態是啥 去學C++

:hamburger: :sandwich: :pizza: 以下為資料型態們

>1/. 數值型態：`int , float, bool`
>2/. 字串型態：`str, chr`
>3/. 容器型態：`list, dict, tuple`


### 宣告方法 :arrow_double_down: 
"=" 是賦質 不懂看下面

#### 數值型態
>:::spoiler **整數** -- interger, int
>宣告變數x為1
>整數就是==整數==，不是小數，不是根號，更不是虛數
>```python=
>x = 1  #不用像c++一樣 ==> int a = 1
>```

>:::spoiler **浮點數** -- float 
>宣告x為 3.14159265359
>浮點數就是==小數==
>```python=
>x = 3.14159265359 #就等於就好
>```

>:::spoiler **布林值** -- bool 
>布林值有分為  ==True== 和 ==False== 
>怎麼用會在後面的**運算**講解
>```python=
>x = True
>y = False
>```


#### 字串型態
>:::spoiler **字元** -- character, chr 
>一個英文字母就是一個字元
>
>python處理英文字元是參照ascii code
>其他國語言就是用unicode啦~~
>ps.python的字元和字串基本上是沒人在管ㄉ
>
>宣告x為 'y' 
>```python=
>x = 'y' #完全不用 #用 '' 不是 "" 喔
>```
>特殊字元： ==換行符號 ‘\n’== 

>:::spoiler **字串** -- string, str 
>宣告x為"yoyosohandsome" 
>```python=
>x = "yoyosohandsome" #超方便
>```

#### 容器型態
>:::spoiler **陣列** -- list
>宣告 a 為 [0,1,2,3] 的陣列
>```python=
>a = [0,1,2,3] #c才需要宣告大小
>```
>然後想要取出 a 裡面的第一個和第二個資料可以這樣寫
>``` = python
>a = [0,1,2,3] 
>print("the first element in a is : ", a[0], "\nand the second is : ", a[1], sep = '')
>```
>沒錯！ ==想拿到第一個資料是[0]不是[1]喔== 超級重要 :exclamation: 
>還有！ python還可以從後面開始抓資料
>``` = python
>a = [0,1,2,3] 
>print("the last element in a is : ", a[-1], sep = '')
>```
>沒錯！就是用 -1 喔
>-2, -3 ...都可以
>::: info
>a[數字] 那個數字不可以超過 a 的大小喔
>:::

>:::spoiler **集合（吧）** -- tuple
>你一定很好奇tuple是啥對吧！
>其實tuple和list差不多
>只是list是==可變動的==（mutable）
>而tuple是==不可變動的==（immutable）
>不可變動就是裡頭的資料不能變動，無論是長度或內容呦！
>```python=
>a = (1,2,3) #想動這裡面的東西會吐error給你
>```

>:::spoiler **字典** -- dictionary, dict
>宣告 a 為 {'a':1, 'b':2, 'c':3} 的字典
>
>字典就是會有一個 key 對上一個 value，並且可以利用 key 來得到 value
>'a' :arrow_right: key  
> 1   :arrow_right: value
>所以就不用去找你的東西的位置在第幾個ㄌ!
>可以直接使用你的key就找到那個value (在做查表的東西的時候很好用)
>eg. ascii碼的題目，或身分證字號的題目
>```python=
>a = {'a':1, 'b':2, 'c':3} 
>print(a['a']) 
>```




## 基本運算和字串處理 
這邊教的就是電腦的加減乘除
還有字串的處理
是一定要熟悉的東西喔！！
### 基本運算！ :arrow_double_down: 

>:::spoiler **加法**
>2.讓a和b相加
>```python=
>a=1
>b=2
>print(a+b)
>```
>2.==一個會讓數學家爆氣的東西==
>可是要記得 =="="== 是宣告的意思 
>不是等於！！！ :hamster: 
>這邊是讓a加1 #有兩種寫法
>```python=
>a=1
>a=a+1 #比較好理解
>print(a)
>```
>or
>```python=
>a=1
>a+=1
>print(a) #比較常用
>```
>[誒幹是穿山甲誒](https://zerojudge.tw/ShowProblem?problemid=a002)

>:::spoiler **減法**
>1.讓a和b相減
>```python=
>a=1
>b=2
>print(a-b)
>```
>2.這邊是讓a減1 #跟加法基本一樣
>```python=
>a=1
>a=a-1 #比較好理解
>print(a)
>```
>or
>```python=
>a=1
>a-=1
>print(a) #可是瑞凡 用了這個就回不去了 沒關係就用這個吧！
>```

>:::spoiler **乘法** 
>讓a和b相乘 :muscle:
>``` python=
>a=3
>b=2
>print(a*b)
>```
>這邊是讓a乘2 #有兩種寫法
>``` python=
>a=1
>a=a*2 #比較好理解
>print(a)
>```
>or
>``` python=
>a=1
>a*=2
>print(a) #比較常用
>```

>:::spoiler **除法** -- 最重要
>讓a和b相除
>除法有分多種 1.取餘數 2.取商數 3.除好除滿(就除盡啦)
>``` = python
>a = 13
>b = 4
>print(a/b) #除好除滿
>print(a//b)#取商數
>print(a%b) #取餘數（不是百分比）
>```
>==也有/=, %=, //=的用法==
>[0除以0是？](https://zerojudge.tw/ShowProblem?problemid=a003)

[筍克里斯多夫安東尼奧班尼迪克希爾為特歐薩絲](https://zerojudge.tw/ShowProblem?problemid=a017)

[原影片](https://www.youtube.com/watch?v=1Nq0PA1KTQQ)
給我回家看 :arrow_heading_up: 不准上課看！！！
### 字串處理ＱＱ :arrow_double_down: 

>:::spoiler 字串的加法
>下面這串會顯示什麼呢？
>```=python
>a = '1'
>b = '2'
>print(a+b) #會顯示3嗎？？
>```
>:::spoiler **上面的答案**
>阿是不會自己跑跑看膩 還想看答案
>蛤你說你已經打好了發現你被騙了是12?
>笑死
>![](https://i.imgur.com/yNadWQO.png)
>沒啦 字串的加法其實就只是把兩堆字串頭尾相接而已
>沒有什麼相加什麼的


>:::spoiler **字元轉ascii** --解題會用到
>我把轉回來也在這邊教好ㄌ :laughing: 
>``` =python
>a = 'a'
>b = 97
>a = ord(a) #字元轉ascii
>b = chr(b) #ascii轉字元
>print(a,b)
>```
>
>[幫幫dora 把你媽媽信用卡上面的幾個號碼念出來喔](https://zerojudge.tw/ShowProblem?problemid=a065)
>ｐｓ. 我找不到那張梗圖ＱＱ



## 邏輯判斷
在程式語言中very important 的一環
初始的程式語言就是由一堆莫名其妙的邏輯閘組合而成
這邊會教到if else, （and, or, not） 那堆

看不懂正常
![](https://i.imgur.com/EbVocNF.jpg)
下面有教學 :arrow_heading_down: 


>:::spoiler **邏輯閘**
>邏輯閘是啥呢?
>邏輯閘就是國中教的 :arrow_right: 且(and),或(or),非(not)
>會跟什麼搭配呢？
>會跟 真（True）, 假(False)搭配
>那這些的邏輯都可以參考真值表!
>![](https://i.imgur.com/BWxNFtb.png)
>程式範例 :arrow_heading_down: 
>```=python
>true_and_false = True and False
>true_or_false = True or False
>not_true = not True
>print("true_and_false = ", true_and_false,"\n" ,"true_or_false = ", true_or_false, "not true = ", not_true, sep='')
>```
>:::spoiler 除了true 和 false還有別的嗎
>![](https://i.imgur.com/wifQRVF.jpg)
>![](https://i.imgur.com/2yUsp5L.jpg)
>python裡面有個叫truethy 和falsy的鬼東西（我記得是這樣叫
>後面復贈介紹!
>ps.謝謝it幫幫忙上的大神 :arrow_right: [truthy and falsy](https://ithelp.ithome.com.tw/articles/10228227)

>:::spoiler **關係運算子**
>* a == b :arrow_left: 如果a 和 b==相同==的話會回傳true 
>* a != b :arrow_left: 如果a 和 b==不相同==的話會回傳true
>* a >= b :arrow_left: 如果a ==大於等於==b 回傳true
>* a > b :arrow_left: 如果a ==大於==b 回傳true
> * 小於也長上面那樣
>
>ps. 看完if-else判斷應該可以更懂
>

>:::spoiler **if-else判斷式**
>這邊介紹一下if else的用途
>『如果我肚子餓,就要吃漢堡, 如果不餓,就喝水』
>如果是程式的話就會長這樣 :arrow_heading_down: 
>```=python 
>if 肚子餓:
>    吃漢堡
>elif 不餓:
>    喝水
>```
>下面是一張工程師梗圖 :arrow_heading_down: 
>![](https://i.imgur.com/SOESOHq.jpg)
>這就是依照上面的邏輯寫的！
>
>這邊是語法簡介 :arrow_double_down: 
>```=python
>if a == 1:
>    print("a=1")
>elif a == 2:
>    print("a=2")
>elif a == 3:
>    print("a==3")
>else:
>    print("a != 1 and a != 2 and a != 3")
>```
>if-else總共有三個東西 if, elif, else
>剛開始都是==先從if開始判斷== ==接著判斷elif==, 直到所有ㄉelif判斷完, ==才判斷else==
>如果if（包含elif） 後面的東西是 ==truthy== 的話就會執行下面
>### 巢狀if-else
>if裡面還可以再包一個if的判斷式 :arrow_heading_down: 
>```=python
>jason = "gay"
>if jason == "gay":
>    if not (jason == "gay"):
>        print("That's not real")
>    print("yeah, he is pretty gay")
>```
>![](https://i.imgur.com/tsZFBvL.jpg)
[我的電腦快沒電啦ＱＱ](https://zerojudge.tw/ShowProblem?problemid=a148)

## 補充 - how to input :arrow_double_down: 
input() :arrow_left: 這個函式就是輸入用
他的會回傳一個 ==str==（無論是輸入數字或小數,都是回傳str）
然後他一次讀一行（遇到\n停下）

然後input( :dog: ) 這個函式
狗狗的位置可以放str進去
那個str會顯示給使用者看到 ~~（就是叫那群傻逼不要幹嘛用的）~~
```=python
jason_de_height = input()
print(jason_de_height) #會回傳你剛剛打的東西,以str型態
```
那如果我們想讓他變成 int 然後算社長的BMI之類的呢
我們就把它輸入後變成 int 吧！
```=python
jason_de_height = int(input())
print(jason_de_height) #會回傳你剛剛打的東西,以int型態
```

## 迴圈 :arrow_double_down: 
python裡面有兩種迴圈！！
for迴圈 and while迴圈！！
今天先教 while 
下次再教 for :laughing:  :laughing: 

那你應該好奇迴圈是在幹嘛的吧 :grey_question: 
迴圈和判斷邏輯一樣在程式語言裡面超重要
因為電腦勝於人類的地方正是其速度
能夠比人類算東西算快很多
所以迴圈正可以幫人類去解決那些繁複需要大量重複的計算～～

喔對迴圈還能執行迭代，又名把list的元素一個一個取出，這也是一個很important的功能

> :::spoiler while迴圈
> 首先語法！
> 我想要讓while迴圈輸出三次“華麗的一擊”可以這樣寫 :arrow_heading_down: 
>
> ```=python
> a = 0
> while a < 3:
>     print("華麗的一擊")
>     a += 1
> ```
> ![](https://i.imgur.com/4zN2Qv6.jpg)
> 
> 那麼用人類的話會長這樣
> ```python
> while 判斷式:
>     動作
> ```
> 如果會在迴圈的開頭都判斷一次
> 如果過了話 就執行動作 然後再判斷一次看要不要跑下一次
> 其實跟if還蠻像的 只是if只能跑一次 而且if有elif

> :::spoiler **迴圈用特殊指令** - 打10顆星
>  1.break :arrow_right: 就是立馬==跳出迴圈== 
>  ```=python
>  a = 0
>  while a != 5:
>      if a == 3:
>          print("break a at 3")
>          break
>      print("now, a is ", a)
>      a += 1
>  ```
>  2.continue :arrow_right: ==馬上跑下一圈==
>  ```=python
>  a = 0
>  while a != 5:
>      if a == 3:
>          continue
>      print("now, a is ", a)
>      a += 1
>  ```
>  3.pass :arrow_right: 這是個很謎的東西 能==不做事==（？）
>  ```=python
>  a = 0
>  while a != 5:
>      if a == 3:
>          pass
>      print("now, a is ", a)
>      a += 1
>  ```
>  ps. pass的用法是 因為python的==執行==那塊不能是空的
>  所以就設計了pass （我猜啦）
[不要管裡面的for](https://zerojudge.tw/ShowProblem?problemid=a244)