<!-- 自訂CSS設定 --> <style> .comment { font-size:70%; color: rgba( 200, 200, 200, 0.9 ); } .tag { padding: .4em; padding-bottom: .3em; margin: 0; font-size: 95%; font-family: Consolas; background-color: rgba( 200, 200, 200, .3 ); border-top-left-radius: 10px; border-bottom-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; } .block { width:auto; padding: .05em; font-family: Consolas; border-top-left-radius: 10px; border-bottom-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; background: rgba(255, 255, 255, .1); display:block; } </style> <!-- 內建CSS設定 --> <style> /* 單行codeblock */ code:not([class$="hljs"]){ background: rgba(255, 255, 255, .1); padding: 0px; margin: 2px; font-size: 85%; border-radius: 5px; } code:not([class$="hljs"]):hover{ background: rgba(255, 255, 255, .3); } /* 單行codeblock (瀏覽模式) */ .markdown-body code, .markdown-body tt{ padding: 0px; padding-top: .2em; padding-bottom: .2em; font-size: 85%; background-color: rgba( 0, 0, 0, .04 ); border-radius: 3px; } </style> # <span class="block"> Lesson 1 </span> ---- **:pencil2::** 嘗試看看吧! **:bulb::** 小技巧 **:rocket::** 一些進階觀念以及使用方法,包含很多Python核心的「魔法」以致於有點難理解 (可以直接忽略這部分) --- ## Python 小知識 ---- :::spoiler Q: 為什麼叫Python? <span class="hint">(點我show答案)</span> A: 因為作者很喜歡[Monty Python](https://zh.wikipedia.org/wiki/%E8%92%99%E6%8F%90%C2%B7%E6%B4%BE%E6%A3%AE) ![](https://upload.wikimedia.org/wikipedia/zh/c/cb/Flyingcircus_2.jpg) ::: ---- :::spoiler Q: 學Python2 還是 Python3? <span class="hint">(點我show答案)</span> A: 如果沒有學2的理由就學3 ouo ::: ---- :::spoiler Q: Python能做甚麼? <span class="hint">(點我show答案)</span> A: - 網路爬蟲與擷取資訊(beautifulsoup) - 數據分析與視覺化(matplotlib) - 機器學習與人工智慧(sklearn) - 網站開發(flask) - 遊戲開發(pygame) - 工具指令(os) ::: --- ## 輸出 ---- ### print() <span class="block">print(<字串>) 將參數字串(使用「"」或「'」包圍起來的文字)顯示到螢幕上</span> ``` python print('Hello World!') # Hello World! ``` ---- 試著輸出 "Everything in "Python" is an object~" ---- 出事囉~ ``` python print("Everything in "Python" is an object") ``` ``` yaml File "<ipython-input-1-f813ba328c1e>", line 1 print("Everything in "Python" is an object") ^ SyntaxError: invalid syntax ``` ---- **解決方法 :** 加入「\」 ``` python print("Everything in \"Python\" is an object") # Everything in "Python" is object~ ``` ---- :bulb: 可以使用單引號包圍字串 做出區隔 ```python print('Everything in "Python" is an object') ``` ---- ### 跳脫字元「\」 讓後面的字元**跳脫**原來的意思 ---- 幾個例子 - \\\ 反斜線 - \\' 單引號 - \\" 雙引號 - \\n 換行 - \\t tab - \\b backspace --- ## Data Type ---- ### type() > `type(<物件>)` 回傳輸入物件的**類別** ``` python type('Hello World') # str type(9857) # int type(True) # bool print(type(8129)) # <class 'int'> ``` ---- 不同類別不能直接做運算 ``` python print(1 + 1) # 2 print('1' + 1) # TypeError: can only concatenate str (not "int") to str ``` ---- ### Python內建資料(物件)型態 ---- | 資料型態 | 中文名 | 範例 | |:- |:- | :- | |str|字串|`"字串"` `'8129'`| | |bool|布林|`True` `False`| |int|整數|`1` `8129`| |float|浮點數|`1.0` `0.8129`| | |list|串列| `[8, 1, 2, 9]`| |tuple|元組| `(8, 1, 2, 9)` | |dict|字典|`{"team" : 8129}` |set|集合| `{8, 1, 2, 9}` | ---- 以後會有更詳細的介紹 目前只要記住**字串**、**布林**和**整數**即可 ---- :rocket: 隱式轉換 可藉由多載運算子讓兩個不同的類別可以直接運算 --- ## Variable 變數 ---- **合法的變數名稱** 可包含`數字` ,`英文字符`,`底線(_)` 並以英文字符或底線開頭 事實上Python可以以中文作為變數名稱 但**相當不建議** ---- 編程時常會用底線和大小寫的組合區分不同類型的名稱 | 類型 | 舉例 | |- |- | |常數|`SNAKE_CASE`| |{變數\|屬性}<br/>{函式\|方法}|`lowerCamelCase` `snake_case`<br/><span class="comment">(兩個都有人用 但同個程式使用統一的命名方式)</span>| |類別|`UpperCamelCase`| --- ## Operators 算子 ---- ### 運算子 | 運算子 | 使用 | 輸出 | |:- |:- | :- | |加 (`+`)|`5 + 2`| `7` | |減 (-)|`5 - 2`| `3` | |整除 (//)|`5 // 2`| `2` | |除 (/)|`5 / 2`| `2.5` | |乘 (*)|`5 * 2`| `10` | |平方 (**)|`5 ** 2`| `25` | | |根號|`25 ** (1/2)`| `5` | ---- ### 運算子的優先順序 | 順序 | 算子 | 中文 | |:- |:- | :- | |1|`**`| 次方 | |2|`*、/、%、//`| 乘、除、餘數、整數除法| |3|`+、-`| 加法、減法 | |4|`>>、<<`| 右移、左移(位元運算子) | |5|`&`| 與(位元運算子) | <span class="comment"> 其他就自己google咯~ </span> ---- ### in-place operation ```python a = 0 a += 1 # 相當於 a = a + 1 print(a) # 1 # 加減乘除都可以用此方法 ``` ---- ### 比較算子 | 算子 | 中文 |:- | :- | |`>、<`| 大於、小於 | |`>=、<=`| 大於等於、小於等於| |`==`| 等於 | |`!=`| 不等於 | 回傳一個**布林值** ---- ## 布林邏輯 ---- |運算子|接收值|真值|輸出| |:- | :- |:-|-| |and|2|2 |True| |or |2|>0|True| |any|n|n |True| |all|n|>0|True| `not` 將結果翻轉 `not True` -> `False` `not False` -> `True` ---- 這裡有一個需要注意的地方: 邏輯運算子的優先順序為 not -> and -> or 也就是說 False and False or True and ---- ```python print(True and True) # True print(False and True or True) print(any(False, True, False, False)) # True ``` :pencil2: 自己試試看吧! ---- :rocket: `+=` 的含意 Pyhon藉由`__iadd__`控制「`+=`」的行為 在物件沒有`__iadd__`方法時會轉而調用`__add__` 這時候的+=變成一種**語法糖** --- ## 流程控制 ---- ### 條件式 ---- ### if > `if <布林值> :` **如果**布林值為真(True) 執行區塊內的程式碼 別忘記冒號和縮排哦 ```python= # a > b 會回傳一個布林值 if a > b: print('a大於b') ``` ---- ### elif > `elif <布林值> :` **否則如果** 當if沒有執行 就會進到`elif`區塊 ```python=3 elif a < b: print('a小於b') ``` 也可以連用多個elif哦 ---- ### else **否則** 當所有的條件式都未成立 進入`else`區塊 ```python=5 else: print('a等於b') ``` ---- :rocket: 三元運算子 `result = a if <布林值> else b` 也可以用 `(a,b)[<布林值>]` 的方式實現 原理: int(True) -> 1 int(False) -> 0 將布林值轉換為1和0 並以此取值 雖然比較短但**可讀性較差** --- ### 迴圈 ---- while ---- `while <布林值> :` 用於多次重複一段代碼 直到<布林值>為False while True 無窮迴圈 break 跳出一段迴圈 continue 跳回循環頂部 停止目前的運算 從頭運行迴圈內的代碼 ---- :pencil2: Zerojudge a024 ```python= a, b = input().split() a = int(a) b = int(b) # your code ``` ---- ```python=5 while b != 0: a, b = b, a%b # 等同於: # c = a%b # a = b # b = c print(a) ``` 這裡使用到了**輾轉相除法**的技巧 ---
{"metaMigratedAt":"2023-06-16T10:40:36.547Z","metaMigratedFrom":"YAML","title":"Lesson 1","breaks":true,"slideOptions":"{\"transition\":\"fade\",\"parallaxBackgroundImage\":\"https://cdn.discordapp.com/attachments/887196342135451652/889752537513750588/image0.png\",\"parallaxBackgroundSize\":\"2100px 1000px\",\"defaultTiming\":120}","contributors":"[{\"id\":\"35809032-c270-45a6-adab-a7e7a63da25b\",\"add\":11917,\"del\":7923},{\"id\":\"a41c05df-55bf-44dc-9b5f-6e53858b0a77\",\"add\":3065,\"del\":743}]","description":":pencil2:: 嘗試看看吧!:bulb:: 小技巧:rocket:: 一些進階觀念以及使用方法,包含很多Python核心的「魔法」以致於有點難理解 (可以直接忽略這部分)"}
    805 views
   Owned this note