--- tags: computer science --- <center> # **Python 101** ![](https://i.imgur.com/pfQzsI4.png =100x) </center> ## 課程訊息 <img src = "https://i.imgur.com/yhCgh7Y.jpg" height = 200px style="float:right"/> ### 講者訊息 - 盧政良 (Zheng-Liang Lu, Arthur) - 電子信箱:arthurzllu@gmail.com ### 工作環境 - Python 3.6 on [Google Colab](https://colab.research.google.com/) - Python 3.10 on Visual Studio Code ### 預備知識 - 四則運算、代數運算 - 中學數學 - 有多項式與對數經驗者佳 ### 學習目標 - 掌握Python基本語法 - 學習以流程為基礎的程式設計概念 - 了解電腦運作原理與利用電腦解決問題 - 培養對科技的興趣並建立自我學習能力 - 可銜接[演算法實戰班](/lEtjPRBFQUSTAFB8FTylXA)、[資料科學入門](/gYLiNF6PQkqiW3QRMzA8CA)與[Python財務計算](/RjzdJKGGSDGTozfU_W_hlQ)等應用課程 ### 評分標準 & 結業證書領取 - 本課程有<font color = "red">五次</font>的程式作業,於特定的章節內公布並在 T + 7 之後進行檢討 - 完成五次程式作業的學員可獲頒證書 - 領取證書的細節詳見[訓練班公告網頁](https://train.csie.ntu.edu.tw/train/certificate.php) <center> ![](https://i.imgur.com/N3rHh8o.jpg =300x) </center> ## 課程架構 ### 第零回:導論 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_0_introduction.ipynb)</font> - 課程要求 - 背景知識 - 電腦如何運作? <font size = -1>[link](http://ed.ted.com/lessons/inside-your-computer-bettina-bair)</font> - 資料如何保存? <font size = -1>[link](http://ed.ted.com/lessons/how-computer-memory-works-kanawat-senanan)</font> - 什麼是演算法? <font size = -1>[link](http://ed.ted.com/lessons/your-brain-can-solve-algorithms-david-j-malan)</font> - Python簡介 ### 第一回:變數、資料型態、運算子 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_1_variable_type_operator.ipynb)</font> - 二進位系統 - 變數的使用與記憶體位址的概念 - 資料型態:整數、浮點數、布林、字串 - 算術運算子、三一律運算子 - 指定運算子與記憶體模型 ### 第二回:資料結構 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_2_data_structures.ipynb)</font> - 清單 - Tuple - 集合 - 字典 - 記憶體配置與shallow copy ### 第三回:流程控制 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_3_flow_controls.ipynb)</font> - 有條件的敘述 - 重複的敘述 - for 迴圈與 while 迴圈 - 多層迴圈 ### 第四回:函式 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_4_functions.ipynb)</font> - 定義新的函式 - 匿名函式:lambda - 函式設計風格:Map & Filter - 函式與記憶體堆疊 - 區域變數與全域變數 - 遞迴 <center> ![](https://i.imgur.com/rKVSmtE.png =600x) </center> ### 第五回:演算法 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_5_algorithms.ipynb)</font> - 排序演算法 - 演算法分析 - 對數時間演算法 <font size = -1>[pdf](https://www.csie.ntu.edu.tw/~d00922011/java/log-time_algorithm.pdf)</font> - 搜尋演算法 - 洗牌演算法 - 蒙地卡羅法 - 動態規劃 - LeetCode牛刀小試 - 影片觀賞: [DeepMind: AlphaGo 2017](https://www.youtube.com/watch?v=dKOuUo3pZSE) ### 第六回:例外處理與檔案處理 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_6_exception_and_files.ipynb)</font> - 例外處理:try-except-else-finally - 自定義例外 - 檔案處理 ### 第七回:物件導向設計 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_7_oop.ipynb)</font> - 類別與物件 - 封裝、繼承、多型 - 模組與套件 ### 第八回:進階議題 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_8_advanced_topics.ipynb)</font> - 私有成員 - Magic Methods - 靜態成員 - 修飾子 - 產生器與迭代器 - 平行程式 <font color = "red" size = -1>new</font> ### 第九回:資料視覺化 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_9_pandas_matplotlib_seaborn.ipynb)</font> - 資料處理的救星:Pandas - 繪圖套件:Matplotlib, Seaborn ### 第十回:科學計算初探 <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_10_numpy_scipy.ipynb)</font> - 線性代數套件:NumPy - 科學計算套件:SciPy ### 最終回:Game of Life <font size = -1>[notebook](https://www.csie.ntu.edu.tw/~d00922011/python/101/notebooks/py_11_game_of_life.ipynb)</font> <center> ![](https://i.imgur.com/itJDrX5.gif) </center> ## 參考文獻 ### 使用文件 - Python: https://docs.python.org/3/tutorial/index.html - https://www.python.org/dev/peps/pep-0008/ - Pandas: https://pandas.pydata.org/ - Matplotlib: https://matplotlib.org/ - Seaborn: https://seaborn.pydata.org/ - Plotly: https://plotly.com/api/ - NumPy: https://numpy.org/ - SciPy: https://www.scipy.org/ ### 大學課程 - [CMU 15-112: Fundamentals of Programming and Computer Science](https://www.cs.cmu.edu/~112/index.html), Carnegie Mellon University, 2021sp <font size = -1 color = "red">IN PROGRESS</font> - [CS41 happy code the python programming language](https://stanfordpython.com/archive/), Stanford University <font size = -1 color = "red">IN PROGRESS</font> - [Python Practice](http://python.berkeley.edu/resources/), University of California, Berkeley <font size = -1 color = "red">IN PROGRESS</font> - [CS 61A: Structure and Interpretation of Computer Programs](https://cs61a.org/), University of California, Berkeley <font size = -1 color = "red">IN PROGRESS</font> - [Scientific Programming in Python](http://ucl-cs-grad.github.io/scipython/lectures.html) - S. Linner, M. Lischewski, M. Richerzhagen, [Python: Introduction to the Basics](https://www.fz-juelich.de/SharedDocs/Downloads/IAS/JSC/EN/slides/python/python.pdf?__blob=publicationFile), Forschungszentrum Jülich, 2021 ### 免費教學平台/題庫 - 科技領域加深加廣選修課程之進階程式設計 [link](https://ghresource.mt.ntnu.edu.tw/nss/p/InformationTechnologyTPD05) - APCS大學程式設計先修檢測:https://apcs.csie.ntnu.edu.tw/ - LeetCode: https://leetcode.com/ - CodeWars: https://www.codewars.com/ - Kaggle: https://www.kaggle.com/learn/python - http://www.pythontutor.com/visualize.html#mode=edit ### 教科書等級書目 - J. R. Parker, [Python: An Introduction to Programming](https://www.amazon.com/Python-Introduction-Programming-J-Parker/dp/1944534652), 2/e, 2021 ![](https://i.imgur.com/LCqIZL9.png =100x) - James R. Payne, [Python for Teenagers: Learn to Program like a Superhero!](https://www.amazon.com/Python-Teenagers-Learn-Program-Superhero/dp/1484245490), 2019 ![](https://i.imgur.com/mnNg9kR.png =100x) ### 跟課堂有關的電影/影集 - [Imitation Game (2014)](https://www.imdb.com/title/tt2084970/) ![](https://i.imgur.com/Dn7BZQw.png) - [DeepMind: AlphaGo (2017)](https://www.imdb.com/title/tt6700846/) ![](https://i.imgur.com/MpD9mIn.png) ### 與程式設計相關的遊戲 - [Human Resource Machine](https://store.steampowered.com/app/375820/Human_Resource_Machine/) ![](https://i.imgur.com/gqgb1IJ.png =300x) - [7 Billion Humans](https://store.steampowered.com/app/792100/7_Billion_Humans/) ![](https://i.imgur.com/6Tf8t0k.png =300x)