<style> h1, h2 { text-align: center; } h4 { text-align: center; font-size: 30px; } div.list { counter-reset: list-number; font-weight: bold; font-family:monospace; margin-bottom: 20px; } div.list br { margin-right: 20px; } div.list div:before { counter-increment: list-number; content: counter(list-number) ; margin-right: 10px; margin-bottom:10px; margin-top:10px; width:17px; height:17px; display:inline-flex; align-items:center; justify-content: center; font-size:12px; background-color: gray; border-radius:50%; color:white; } </style> <!-- {%hackmd theme-dark %} --> # [第一堂課程](https://hackmd.io/@Hi-hi/SJSzx9NWo#/) ## 上課規則說明 ### 不能做的事情 :no_good: <div class="list"> <div>玩手機</div> <div>用電腦玩遊戲or看影片</div> </div> --- ### 上學期 未來六次社團課(含今天)會教大家**python**的基本語法,讓大家可以有入門的基礎 --- ### 下學期 目標:專案製作 簡述:除了教大家如何使用`github`以外,我們會讓大家選擇要往哪一個方向學習並做出一個小專案 --- #### <font size=5px>深度學習</font> (教學長) **學習內容**: $\qquad$基本上會帶大家稍微了解一下深度學習是什麼,然後讓大家實作出一個手寫數字辨識(MINST)。 **使用函示庫**: $\qquad$主要是使用***python***裡面的`pytorch`第三方庫。不過因為深度學習的深度很深,所以可能會需要先預期我們不會提到太多語法 :poop: **課程方向**: $\qquad$主要以觀念為主,程式碼可能也只能熟悉到了解每一個區塊在做什麼,不過學會的話,可以輕鬆的說出深度學習在做什麼,還有一些比較細節一點的概念 **預備知識**: $\qquad$ 上學期課程內容,不需要太多數學知識,我們不會教梯度( 我不會 :poop: ),也不會提到他是怎麼微分的 --- #### <font size=5px>python 遊戲製作</font> (教學長) --- **學習內容**: $\qquad$了解遊戲程式的基本架構 **使用函式庫**: $\qquad$`pygame`函式庫 **預備知識**: $\qquad$ 將上學期的課程內容學會,並且對遊戲有一點點的了解 --- #### <font size=5px>爬蟲</font> (教學長、學術長) --- **學習內容**: $\qquad$了解網路爬蟲的運作原理, **使用函式庫**: $\qquad$實作過程會用到`Beautiful Soup`、`request` --- #### <font size=5px>網頁遊戲製作</font> (學術長) --- **學習內容**: $\qquad$透過***javascript***實作出一個[貪吃蛇小遊戲](https://william1010121.github.io/Snake_game_7-30/) **學習方向**: $\qquad$純***javascript***,`HTML`跟`CSS`只會稍為的帶過,主要會是教`canva`的使用(不是做簡報的那一個),還有關於遊戲的一些架構 **預計成果**: $\qquad$做出一個裡面有貪吃蛇小遊戲的網頁 **預備知識**:無 --- #### <font size=5px>架設網站( hexo )</font> (學術長) --- **學習內容**: $\qquad$ 架設一個自己的部落格,自己的網站 **使用方式**: $\qquad$ `github` 架設網站然後用`hexo`架設 **預備知識**: $\qquad$ 如果會寫`$$`(latex 裡面的數學式) 的話會比較有震撼力,沒有的話也是一個很好的學習歷程 :poop: --- #### <font size=5px>$\LaTeX$學習( overleaf )</font> (學術長) --- **學習內容**: $\qquad$學習用$\LaTeX$製作出自己的一份心得or學習歷程 **學習方向**: $\qquad$基本$\LaTeX$語法,以及如何放圖片、寫數學運算式跟畫流程圖 **使用函式庫**: $\qquad$ $\LaTeX$裡面的函式庫 **預備知識**:無 --- ## python ### 特性 - 弱型別語言 - 強縮排語言 - 豐富的第三方庫 - 易學、易懂的程式碼 ### 基本知識 ***python***註解是`#` 不過這個是單行註解,如果想要一次註解多行的話可以透過加上`'''`來讓裡面的程式碼直接變成字串 ::: spoiler 點我 在**windows**有些編譯器可以選起來用Ctrl + /或Ctrl + 1 ::: ```python= # 我是註解( 單行) 多行就沒有辦法 ''' 我是字串 可以一次註解到很多行 ''' ``` ### 輸入輸出 ```python= name = input() print("Hello world") print(name, end = ""); ``` <!-- ''' print 是可以輸出值or字串的東西,基本上python裡面的變數都可以直接print出來, 不過他預設是會換行的。 如果不想要換行可以在後面加上 end="" ''' --> 如果想要的話,也可以一次`print`多個變數出來 ```python= a = input() b = input() print(a, b, sep = ',', end = "") >>> a, b ``` <!-- ''' sep 的意思是seperate(分開),可以在每輸出完一個變數之後在後面加上特定的符號 ''' --> :::success ***python***的`input`接收到的都是字串,至於如何轉換我們馬上就要提及了。 ::: # 資料型態 在使用***python***的時候有一個好處,就是通常不需要去在意會不會超出範圍,都是支援大數運算的。 ## int **int**是`integer`的縮寫,意思是整數,如同大家所理解的,支援加減乘除。 ```python= a = int(5) b = int(3) print( "a + b is" , a + b, sep=" : " ) print( "a - b is" , a - b, sep=" : " ) print( "a * b is" , a * b, sep=" : " ) print( "a / b is" , a / b, sep=" : " ) print( "a % b is" , a % b, sep=" : " ) # % 為取餘數 print( "a ** b is", a ** b, sep=" : ") # ** 為次方 print( "a // b is", a // b, sep=" : ") # // 為向下取整 ``` ## float **float**浮點數,存取的是有小數點的數,採取科學記號的存取方式 ```python= a = float(5) print(a) # 5.0 ``` ## string - 輸入預設型態為字串 - 可用建構元`str()`宣告 - 對於**python**而言,`''` 及 `""`皆可用來表示字串 - **python**的字串支援`+`號及`*`號 ```python= s1 = "Hello " s2 = "FDHS" s3 = s1 * 2 + s2 + '!!!' print(s3) #Hello Hello FDHS!!! ``` ### 字串宣告 <div class="list"> <div>str()</div> <div>"string"</div> <div>'string'</div> </div> ```python= str = str(1223) print(str) # 1223 ``` ### 格式化字串 <div class="list"> <div>f"string"</div> <div>string.format()</div> </div> ```python= s = f"{124}, {33}" print(s) # 124, 33 ``` ```python= i = int(1) s1 = "{123 + 86}" s2 = "{}, {}".format(i + 1, i + 2) print(str1, str, sep = ", ") # 2, 3 ``` ### 索引 - 字串提供為可透過索引值找到字元的不可修改序列 #### 用法 <div class="list"> <div>s[i]</div> <div>s[i:j]</div> <div>s[i:j:k]</div> </div> ```python= s = "abcdefghijklmnopqrstuvwxyz" s1 = s[17] print(s1) # r s2 = s[6:13] print(s2) # ghijklm s3 = s[0:18:3] print(s3) # adgjmp ``` ### 函式 <div class="list"> <div>string.count()</div> <div>string.eval()</div> <div>string.upper()</div> <div>string.lower()</div> </div> ```python= s = "Hello FDCSC 5th" print(s.count(' ')) # 2 print(s.len()) ``` ```python= s1 = "8+7-6*5/4%3**1//2" eval(s1) # 15.0 ``` ```python= s1 = 'aBCd' print(s1.upper()) # ABCD print(s1.lower()) # abcd ``` ## bool 全名為`boolean`,存取**True**, **False** ```python= flag = False print(flag, not flag, sep=", ") # False, True ``` --- ## list(array) **主要函式** <div class ="list"> <div>list.append()</div> <div>list.clear()</div> <div>list.copy()</div> <div>list.count()</div> <div>list.extend()</div> <div>list.insert()</div> <div>list.index()</div> <div>list.pop()</div> <div>list.remove()</div> <div>list.reverse()</div> <div>list.sort()</div> </div> ```python= lst = [1, 2, 3] ''' lst = [] lst = list() 這些初始化都是可以被接受的 ''' print( lst ) #[1, 2, 3] print( lst[ 0 ]) # 1 # -------------------------- # lst .append( 3 ) print( lst ) #[1, 2, 3, 3] # -------------------------- # lst .extend( [2, 4, 6]) print( lst ) #[1, 2, 3, 3, 2, 4, 6] # -------------------------- # lst .pop() print( lst ) #[1, 2, 3, 3, 2, 4] # -------------------------- # lst .remove( 2 ) print( lst ) #[1, 3, 3, 2, 4] # -------------------------- # id = lst .index(4) # 4 print(id) # -------------------------- # id = 5 in lst print(id) # False # -------------------------- # id = lst .index(5) if 5 in lst else -1 ''' 等價於 id = -1 if 5 in lst : id = lst .index( 5 ) ''' print(id) # -1 #--------------------------- # ``` ## dict <div class="list"> <div>dict.clear()</div> <div>dict.copy()</div> <div>dict.fromkeys()</div> <div>dict.get()</div> <div>dict.items()</div> <div>dict.keys()</div> <div>dict.pop()</div> <div>dict.popitem()</div> <div>dict.setdefault()</div> <div>dict.update()</div> <div>dict.values()</div> </div> ## tuple <div class="list"> <div>tuple.count()</div> <div>tuple.index()</div> </div> :::spoiler tuple的念法 Mon, Wed, Fri -> too-pull ::: ## set <div class="list"> <div>set.add()</div> <div>set.clear()</div> <div>set.copy()</div> <div>set.discard()</div> <div>set.isdisjoint()</div> <div>set.issubset()</div> <div>set.issuperset()</div> <div>set.pop()</div> <div>set.remove()</div> <div>set.union()</div> <div>set.update()</div> </div> ## 題目練習 參考文章: https://hackmd.io/@wootu/SyGFHPjS-?type=view http://kaiching.org/pydoing/py/python-manual.html