寫 (Python) 程式 4 法 - 四大步驟
Python Taiwan 線上讀書會
Ming-der Wang (王銘德) (8/15 9:00pm)
大綱
- 程式開發 4 法 - 四個步驟
- csv 檔與 JSON 檔案格式
- API server 概念
如何開發一個專案,
或是要解決一個問題
哪 4 法?
challenges -> ideas ->-> solutions -> implementations -> design -> coding
想法 -> 方法 ->-> 作法 -> 文法
brain storming | implementation
集思廣益 | 實施階段
產品經理主導 | 程式設計師主導
哪 4 法?
想法 -> 方法 ->-> 作法 -> 文法
有了問題, 你要有自己得想法。
例如: 平常站累了, 怎麼辦?你有什麼想法
(找個東西坐坐)
如果確定要找個東西坐坐,那你有什麼方法?
你可能回答: 找一張椅子坐坐, 休息休息
1. 郵購一張椅子
2. 訂做一張椅子
3. 自己做
如果自己做:
a. 三隻腳 + 木板
b. 用什麼工具
Step1. 把木板鋸出三隻腳
Step2. 把木板磨成椅面
Step3. 把腳釘到椅面下
(坐坐看)
哪 4 法 (try again)
想法 -> 方法 ->-> 作法 -> 文法
追不到某個女朋友, 你會有什麼想法。
例如: 想辦法, 先收集她的資料, 有了電話號碼, 再來跟她約會
找徵信社?
問她室友?
你可能回答: 寫一個分享網站, 大家都用了, 自然會有她電話
a. 開始想怎麼做才能做到分享
b. 用什麼語言
c. 架構如何設計, 才會容易把自己的照片電話分享出來, 且大家想都很想用
如果你選用 Python 語言
你才需要用到 Python 的文法, 撰寫程式。
(寫好後, 再測試看看)
大家知道我在講誰了嗎
哪 4 法 (try again)
想法 -> 方法 ->-> 作法 -> 文法
對於言論審查, 你會有什麼想法。
例如: 言論自由, 在社群媒體敏感的留言不應該被刪除
關掉社群媒體?
自己不用就好?
你可能回答: 蓋一個永久網站, 把敏感留言複製一份讓大家查詢
a. 用"爬蟲"抓 twitter網站資料
b. 把敏感字眼的 tweets 找出來
c.將資料寫到區塊鏈裡(永遠保存)
d.在開發網站
a. b. 你要會使用 twitter APIs
c. blz.js + js 文法
d.你才需要用到 Python + Django 的文法, 撰寫網頁程式。
(再測試看看)
所以 “爬蟲” 不會是你的專案名稱
它只是第三步驟 - 作法裡的一小部分。
甚至於有些情況, 可以用工具就辦到,或用 APIs 更好。
("網路爬蟲" 的定義: 收集網頁上資料的一個方法)
四大步驟
- 需要反覆練習
- 前一步驟有修改, 後面的所有步驟就須改變。可能是微調, 但更有可能是大改
- 所以 coding 是最後一個步驟而已, 前面改動, 整個程式就要重寫
- 有些作法, 也可以不寫程式, 用工具
黑客松(組隊專區)
練習討論過程中, 就記錄下來.
(沒執行的 ideas, 槓掉而不要刪掉)
補充說明 - 作法
作法 - 背景知識
JSON 與 API server 是什麼?
作法 - 背景知識 (1)
*盡量利用網路, 不要只想到 "電腦主機" 而已
所有網路裝置, 包括手機, 電腦, 都是即時 call API 抓或放資料
作法 - 背景知識 (2)
*蓋 server 不難, 盡量把資料放到雲端
簡化你的資料, 不外乎 csv 格式, 或 JSON 格式
* 把資料放在 API server 端, 才能跟其他行動裝置共享
csv 資料檔
優點:
- 很多開放資料都用 csv 檔
- 容易從 Excel 等輸出
缺點:
- 文字為主, 數字還是文字
- 容易有亂碼
- 無法描述複雜物件
- 不是標準交換格式
kaggle 有很多csv datasets
(click here)
作法 - 背景知識 (3)
csv 檔範例
id,name,amount,Remark
1,"Johnson, Smith, and Jones Co.",345.33,Pays on time
2,"Sam ""Mad Dog"" Smith",993.44,
3,"Barney & Company",0,"Great to work with
and always pays with cash."
4,Johnson's Automotive,2344,
第一行是 列標題
每一欄位, 用逗點分開
[ { "id": 1, "name": "Johnson, Smith, and Jones Co.", "amount": 345.33, "Remark": "Pays on time" }, { "id": 2, "name": "Sam \"Mad Dog\" Smith", "amount": 993.44, "Remark": "" }, ...]
轉成 JSON 格式
總共有 4 筆資料, [ ] 表示陣列
JSON 資料檔
優點:
- 電腦間, 通用交換格式
- Javascript 直接使用
- 人與機器都容易讀
- 有數字,字串,布林,陣列
- 有物件, 物件陣列等...
- 所有電腦語言都能用
- 本身也是文字檔
- 很多設定檔的格式
缺點:
- 無 (或不是很重要)
kaggle 當然也有JSON datasets
(click here)
作法 - 背景知識 (4)
JSON + 手機 demo
(demo)
install Expo iOS, Android App from
GraphQL demo
註:GraphQL 可以由下載端自行決定下載欄位, 而無需修改任何 API
index.py
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run()
用 now 快速部署 server
vercel.json
{ "version": 2,
"builds": [ { "src": "*.py", "use":
"@liudonghua123/now-flask" } ],
"routes": [ { "src": "/.*", "dest": "/"} ] }
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run()
requirements.txt
Flask==1.1.2
Flask-RESTful==0.3.8
Q & A
(討論一下, 組隊進度)
寫 (Python) 程式 4 法 - 四大步驟
By Ming-der Wang
寫 (Python) 程式 4 法 - 四大步驟
- 1,389