# Python 入門 [Google Colab 教材](https://colab.research.google.com/drive/1kS8MKXbLGnzgibJCmjTgn1rt8A-wyUhq?usp=sharing) ## 本機安裝 python - **前置步驟** - **移除 windows 應用程式執行別名關聯** 設定 > 應用程式與功能 > 應用程式執行別名 ![image](https://hackmd.io/_uploads/rkv7oIzfye.png) ![image](https://hackmd.io/_uploads/r1MZoUfzkx.png) 移除python.exe的別名 - **安裝** - **下載 python** https://www.python.org/downloads/ - **安裝 python** ![image](https://hackmd.io/_uploads/Hy213Lzz1g.png) - **試試看吧** - **一段把電腦關機的程式** ```python import os os.system('shutdown /s') ``` ## 第一章:Python基礎 ### 什麼是Python? - **簡單介紹** - Python是一種高級編程語言,創建於1991年,由Guido van Rossum設計。 - 它以簡潔和可讀性強的語法而聞名,非常適合初學者。 - **為什麼選擇Python?** - 易學易用:Python語法簡單明瞭,非常適合編程初學者。 - 強大的社區和豐富的資源:Python有大量的開源庫和框架,涵蓋了從數據科學到網頁開發的各個領域。 - 數據科學:pandas、numpy 和 matplotlib 使得數據處理和可視化變得非常簡單。 - 網頁開發:Django 和 Flask 是兩個受歡迎的框架,用於構建強大的網頁應用。 - 爬蟲:Python 擁有許多專門用於網路爬蟲的庫,如 BeautifulSoup 和 Scrapy,能夠快速構建網頁抓取程序,適合數據收集和分析。 - 多用途:Python適用於數據分析、機器學習、網頁開發、自動化腳本等多種應用場景。 - 數據分析:Python在數據科學領域非常流行,提供了強大的數據處理和分析工具。 - 機器學習:使用像 scikit-learn 和 TensorFlow 這樣的庫來構建和訓練機器學習模型。 ### 安裝Python - VSCode <!-- - Window --> [Visual Studio Code 撰寫 Python 程式](https://hackmd.io/@smallshawn95/vscode_write_py) <!-- - MacOS - 下載 VSCode 1. 到 [VSCode 官網](https://code.visualstudio.com/) 2. 點擊下載 VSCode 3. 下載後開啟 VSCode 4. 在 VSCode 中點擊「延伸模組」 5. 搜尋「Python」點擊下載 6. 搜尋「Code Runner」 - 下載 Python 1. 到 [Python 官網](https://www.python.org/) 2. 下載任意版本(3.12) 3. --> - online (Google Colab) 1. 開啟 [Python 入門 Google Colab 教材](https://colab.research.google.com/drive/1kS8MKXbLGnzgibJCmjTgn1rt8A-wyUhq?usp=sharing) 2. 直接執行就好 ### 第一個Python程序 - **顯示 `Hello, World!`** 1. 打開你電腦上的Python編輯器。 2. 在編輯器中輸入以下代碼: ```python print("Hello, World!") ``` 3. 直接運行程序,你應該會看到輸出: ``` Hello, World! ``` ### `print` 函式 - **介紹** - `print` 函式是 Python 中最常用的輸出函式,用於將信息輸出到控制台或終端。它可以打印字符串、數字、變量的值以及其他對象。 - **基本用法** - **打印字符串**:直接在 `print` 函式中輸入字符串。 ```python print("Hello, World!") # 輸出: Hello, World! ``` - **打印數字**:可以直接打印數字。 ```python print(123) # 輸出: 123 ``` - **打印變量**:將變量的值打印出來。 ```python name = "Alice" age = 25 print(name) # 輸出: Alice print(age) # 輸出: 25 ``` - **同時打印多個值**:可以用逗號分隔多個值,`print` 函式會將它們打印在一起,用空格分隔。 ```python print("Name:", name, "Age:", age) # 輸出: Name: Alice Age: 25 ``` - **控制行結尾** - **默認換行**:`print` 函式默認在輸出後換行。 ```python print("Hello") print("World") # 輸出: # Hello # World ``` - **不換行**:可以通過 `end` 參數設置輸出後不換行。 ```python print("Hello", end="") print("World") # 輸出: HelloWorld ``` - **自定義結尾字符**:可以設置自定義的結尾字符。 ```python print("Hello", end=", ") print("World") # 輸出: Hello, World ``` 作業解答:顯示自己的名字、學號、系級 ```python= print("史伯勳") print("411285049") print("資工二") ``` ### 輸入 在 Python 中,input() 是一個很常用的函式,用來讓使用者輸入。當程序執行到 input() 時,它會暫停並等待用戶輸入內容,直到用戶按下 Enter 鍵。 ##### `input()` 函式的基本使用 ```python= input() ``` ##### 印出輸入 ```python= print(input("輸入:")) #在 input 的括號中,可以放入提示字,在 input 前輸出 ``` ##### 最常使用:使用變數輸入輸出 ```python= name = input("輸入名字:") print(name) ``` ## 第二章:基本語法 ### 數據類型和變數 * #### 數據類型(數字、字串、布林) #### 1. 數字 - **整數 (Integer)**:沒有小數部分的數字,例如:5, -3, 42。 - **浮點數 (Float)**:有小數部分的數字,例如:3.14, -0.001, 2.0。 ##### 例子 ```python= x = 5 # 整數 y = 3.14 # 浮點數 print(x) # 輸出: 5 print(y) # 輸出: 3.14 ``` #### 2. 字串 (String) - 字串是一串字符,用於表示文本。 - 可以使用單引號 ' 或雙引號 " 定義字符串。 ##### 例子 ```python= name = "Alice" greeting = 'Hello, World!' print(name) # 輸出: Alice print(greeting) # 輸出: Hello, World! ``` #### 3. 布林值 (Boolean) - 布林值只有兩個取值:True 和 False。 - 常用於條件判斷。 ##### 例子 ```python= is_student = True is_teacher = False print(is_student) # 輸出: True print(is_teacher) # 輸出: False ``` --- * #### 變數 - 變數是用來存儲數據的容器,可以用來保存各種類型的數據。 - 在Python中,變數是動態類型的,不需要事先聲明類型。 #### 如何定義變數 - 只需要使用 `=` 將一個值給一個變數。 #### 例子 ```python= # 定義變數 x = 5 # 整數 int y = 3.14 # 浮點數(有小數點) float name = "Alice" # 字串 str is_student = True # 布林值 bool # 輸出變數的值 print(x) # 輸出: 5 print(y) # 輸出: 3.14 print(name) # 輸出: Alice print(is_student) # 輸出: True ``` > #### 注意 > * 變數名必須以字母或下劃線 _ 開頭,不能以數字開頭。 > * 變數名區分大小寫(name 和 Name 是不同的變數)。 > * 使用有意義的變數名,以提高代碼的可讀性。 作業:定義你的名字和學號,輸出~ ```python= name = "王小明" studentNumber = "4100000000" print(name) print(studentNumber) ``` 作業2:顯示學號、系級以及姓名的輸入格,並輸出 ```python= name = input("請輸入名字:") studentNumber = input("輸入學號:") department = input("輸入系及") print(name) print(studentNumber) print(department) ``` --- ### 運算符 - 基本算術運算符 - **加法 (+)**:將兩個數字相加。 - **減法 (-)**:將一個數字從另一個數字中減去。 - **乘法 (*)**:將兩個數字相乘。 - **除法 (/)**:將一個數字除以另一個數字,結果為浮點數。 ```python= a = 5 b = 3 result = a + b # result 為 8 result = a - b # result 為 2 result = a * b # result 為 15 result = a / b # result 為 1.6667 ``` - **整數除法 (//)**:將一個數字除以另一個數字,結果為整數。 - **取餘 (%)**:計算除法的餘數。 - **指數 ```(**)```**:計算數字的冪。 ```python= a = 5 b = 3 result = a // b # result 為 1 (5 / 3 = 1...2) result = a % b # result 為 2 (5 / 3 = 1...2) result = a ** b # result 為 125 (5 x 5 x 5 = 125) ``` 作業:定義並顯示 result ```python= result = 5*4 print("5 x 4 =", result) result = 5%3 print("5 / 3 = 1 ...", result) ``` - 比較運算符 - **大於 (>)**:檢查一個值是否大於另一個值。 - **小於 (<)**:檢查一個值是否小於另一個值。 ```python= a = 5 b = 3 a > b # 結果為 True a < b # 結果為 False ``` - **等於 (==)**:檢查兩個值是否相等。 - **不等於 (!=)**:檢查兩個值是否不相等。 - **大於等於 (>=)**:檢查一個值是否大於或等於另一個值。 - **小於等於 (<=)**:檢查一個值是否小於或等於另一個值。 ```python= a = 5 b = 3 a == b # 結果為 False a != b # 結果為 True a >= b # 結果為 True a <= b # 結果為 False ``` 作業:輸入兩個成績,比較是否相等,回傳 True 或是 False ```python= John_Math = 84 Max_Math = 94 print(John_Math == Max_Math) ``` - 邏輯運算符 - 和 (and):當兩個條件都為 True 時,結果為 True。 - 或 (or):當至少一個條件為 True 時,結果為 True。 - 非 (not):將布林值取反。 ```python= x = True y = False result = x and y # 結果為 False result = x or y # 結果為 True result = not x # 結果為 False ``` 這些運算符是進行各種數學運算和邏輯判斷的基本工具。掌握它們可以幫助你進行更複雜的計算和條件判斷。 #### 進階 * 運用**運算符**定義變數 ```python= a = 1 b = 2 c = a + b # c = 1 + 2 d = a > b # 1 > 2 => d = false ``` * 額外:**邏輯運算符**定義變數 * 邏輯運算符 or * c = a or b: * or 運算符會返回第一個布爾值為 True 的操作數。如果 a 是 True(非零數值被視為 True),則返回 a 的值,否則返回 b 的值。 * 由於 a 的值是 1(True),所以 c 被賦值為 a 的值,即 1。 * d = b or a: * 這裡 b 的值是 2(True),所以 d 被賦值為 b 的值,即 2。 * 邏輯運算符 and * e = a and b: * and 運算符會返回第一個布爾值為 False 的操作數,如果所有操作數都是 True,則返回最後一個操作數。 * 由於 a 和 b 都是 True,所以 e 被賦值為 b 的值,即 2。 * f = b and a: * 這裡 b 的值是 2(True),a 的值是 1(True)。因此,f 被賦值為 a 的值,即 1。 ```python= a = 1 b = 2 c = a or b # 因為 a 是 True,所以返回 a 的值 d = b or a # 因為 b 是 True,所以返回 b 的值 e = a and b # 因為 a 和 b 都是 True,所以返回 b 的值 f = b and a # 因為 b 和 a 都是 True,所以返回 a 的值 ``` 作業:輸入國文成績以及英文成績是否通過 ```python= chinese = input()#輸入國文成績 english = input()#輸入英文成績 passChinese = chinese >= 60 passEnglish = chinese >= 60 # 顯示是否及格 print(passChinese) print(passEnglish) passBoth = passChinese and passEnglish# 兩個科目都過 passOne = passChinese or passEnglish# 至少一個科目過 # 顯示結果 print(passBoth) print(passOne) ``` --- ### 字串操作 #### 字串拼接 - **使用 `+` 拼接字串**:將多個字串連接在一起。 ```python= first_name = "John" last_name = "Doe" full_name = first_name + " " + last_name print(full_name) # 輸出: John Doe ``` 作業:打招呼 ```python= message = "Hello" name = "John" greeting = message + ", " + name print(greeting) ``` #### 字串使用 - **`len()`**:返回字符串的長度。 ```python= text = "Hello, world!" print(len(text)) # 輸出: 13 ``` - **`upper()`**:將字符串轉換為全大寫。 ```python= text = "hello" print(text.upper()) # 輸出: HELLO ``` - **`lower()`**:將字符串轉換為全小寫。 ```python= text = "HELLO" print(text.lower()) # 輸出: hello ``` - **`strip()`**:移除字符串開頭和結尾的空白字符。 ```python= text = " Hello, world! " print(text.strip()) # 輸出: Hello, world! ``` - **`replace()`**:將字符串中的某個子字符串替換為另一個子字符串。 ```python= text = "Hello, world!" print(text.replace("world", "Python")) # 輸出: Hello, Python! ``` - **`find()`**:返回子字符串在字符串中的起始位置,如果沒有找到則返回 -1。 ```python= text = "Hello, world!" position = text.find("world") print(position) # 輸出: 7 ``` ## 第三章:控制流程工具 ### 條件語句 * #### if 判斷 if 語句用於根據條件執行不同的代碼塊。基本語法如下: ```python= # condition 和 another_condition 視為 bool if condition: # 當 condition 為真時執行這段代碼 elif another_condition: # 當 another_condition 為真時執行這段代碼 else: # 當所有條件都不滿足時執行這段代碼 ``` ```python= a = 10 b = 5 if b > a: print("b 大於 a") elif a > b: print("a 大於 b") else: print("a 等於 b") ``` 作業:判斷是否及格 ```python= Chinese = input() English = input() if Chinese >= 60 and English >= 60 : print("及格") elif Chinese >= 60 : print("只有中文及格") elif English >= 60 : print("只有英文及格") else: print("不及格") ``` 作業2:輸入出生年份,判斷是否大於18歲 ```python= bornYear = input("輸入出生年份(西元):") age = 2024 - int(bornYear) if age > 18: print("大於 18 歲") elif age == 18: print("剛好 18 歲") else: print("小於 18 歲") ``` --- ### 循環 * #### for 循環 for 循環用於遍歷一個序列(如列表、元組或字串)。基本語法如下: ```python= for item in sequence: # 對於 sequence 中的每個 item 執行這段代碼 ``` 用數字範圍 ```python= for i in range(10): print(i) #依序輸出 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ``` 作業:輸出 5 x 1 ~ 5 x 9 ```python= for i in range(1, 10): print("5 x ", i, " =", 5*i) ``` * #### while 循環 while 循環在條件為真時重複執行一段代碼。基本語法如下: ```python= while condition: # 當 condition 為真時執行這段代碼 ``` ```python= a = 10 b = 5 while a > b: # a > b 不成立時跳出,會在 a == b 時跳出 b = b + 1 print(b) # b = 10 ``` 作業:輸入成績,直到成績大於 60 時,輸出“及格了”並跳出迴圈 ```python= while True: score = int(input("輸入成績:")) if score >= 60: print("及格了") break ``` 作業2:輸入成績,直到成績大於 60 的次數大於三次,輸出“及格三次”並跳出迴圈 ```python= passTime = 0 while True: score = int(input("輸入成績:")) if score >= 60: passTime +=1 if passTime == 3: print("及格三次") break ``` ## 第一堂實作 做出一個 BMI 計算機,可以輸入身高、體重,計算出 BMI 以及建議方向。 ```python= while True: height = input("請輸入身高(cm): ") weight = input("請輸入體重(kg): ") height = float(height) weight = float(weight) height = height / 100 bmi = weight / height ** 2 print(bmi) if bmi < 18.5: print("過輕") elif bmi < 24: print("正常") elif bmi < 27: print("過重") else: print("肥胖") message = input("是否繼續計算?(不繼續請輸入「n」") if message == "n": break ``` 進階: 1. 判斷輸入是否合理(體重小於零、身高小於零之類的) 2. 輸入結束後,可輸入 Y 或是 N,決定是否繼續執行計算機 ```python= print("歡迎來到 BMI 計算器!") print("BMI(Body Mass Index)是身體質量指數,用於評估健康狀況。") while True: height = input("請輸入身高(cm): ") weight = input("請輸入體重(kg): ") height = float(height) weight = float(weight) # 計算 BMI height = height / 100 # 轉換為公尺 bmi = weight / (height ** 2) print(f"\n您的 BMI 值為: {bmi:.2f}") # 判斷健康狀況 if bmi < 18.5: print("您的體重過輕,建議增加體重。") elif bmi < 24: print("您的體重正常,保持健康!") elif bmi < 27: print("您的體重略為過重,注意飲食和運動。") elif bmi < 30: print("您的體重過重,建議進行減重。") else: print("您的體重屬於肥胖範圍,建議諮詢專業醫師。") # 詢問是否繼續 message = input("\n是否繼續計算 BMI?(輸入「n」退出,或按其他鍵繼續): ") if message.lower() == "n": print("感謝您使用 BMI 計算器,再見!") break else: print("\n-----------------------------------") ``` 進階:九九乘法表 ```python= for i in range (1, 10): for j in range (1, 10): print(i, "x", j, "=", i * j, end = ", ") print("\n") ``` ## 第四章:數據結構 ### 列表 (List) - **創建和使用列表** - **列表的特色** - **有序性**:列表中的元素是有序的,並且可以通過索引訪問。 - **可變性**:列表中的元素可以被修改、添加或刪除。 - **異構性**:列表可以包含不同類型的元素,例如數字、字符串、列表等。 - **動態長度**:列表的大小是可變的,可以根據需要動態調整。 - **用途** - **存儲多個相關的值**:列表可以用來存儲多個相關的數據,例如一組學生的姓名、一組數字等。 - **數據操作和處理**:列表提供了許多方便的操作方法,可以輕鬆地進行數據的添加、刪除、排序等操作。 - **迭代和循環**:列表可以與 `for` 循環一起使用,用於遍歷所有元素。 - **創建列表**:可以使用方括號 `[]` 創建列表。列表可以包含任何類型的元素,如數字、字符串、甚至是其他列表。 ```python fruits = ["apple", "banana", "cherry"] numbers = [1, 2, 3, 4, 5] mixed = [1, "apple", 3.14, True] ``` - **訪問元素**:通過索引訪問列表中的元素,索引從 0 開始。 ```python print(fruits[0]) # 輸出: apple print(numbers[2]) # 輸出: 3 ``` - **修改元素**:可以通過索引直接修改列表中的元素。 ```python fruits[1] = "blueberry" print(fruits) # 輸出: ['apple', 'blueberry', 'cherry'] ``` - **添加元素**:使用 `append()` 方法將元素添加到列表末尾。 ```python fruits.append("orange") print(fruits) # 輸出: ['apple', 'blueberry', 'cherry', 'orange'] ``` - **刪除元素**:使用 `remove()` 方法刪除指定的元素,或使用 `pop()` 方法刪除指定索引處的元素。 ```python fruits.remove("blueberry") print(fruits) # 輸出: ['apple', 'cherry', 'orange'] fruits.pop(1) print(fruits) # 輸出: ['apple', 'orange'] ``` - **列表長度**:使用 `len()` 函式獲取列表的長度。 ```python print(len(fruits)) # 輸出: 2 ``` --- ### 元組 (Tuple)(不可變的 List ) - **創建和使用元組** - **元組的特色** - **有序性**:元組中的元素是有序的,並且可以通過索引訪問。 - **不可變性**:元組中的元素一旦創建就不能修改、添加或刪除。 - **異構性**:元組可以包含不同類型的元素,例如數字、字符串、列表等。 - **高效性**:由於不可變,元組的操作速度通常比列表更快。 - **用途** - **存儲固定數據**:元組適用於存儲不需要修改的一組數據,例如坐標、顏色值等。 - **作為字典鍵**:元組可以作為字典的鍵,而列表不行,因為元組是不可變的。 - **數據完整性**:使用元組可以保證數據的完整性,避免意外修改。 - **創建元組**:可以使用逗號分隔元素或使用小括號 () 創建元組。 ```python coordinates = 10, 20 person = ("John", 30, "Engineer") ``` - **訪問元素**:通過索引訪問元組中的元素,索引從 0 開始。 ```python print(coordinates[0]) # 輸出: 10 print(person[2]) # 輸出: Engineer ``` - **不可變性**:元組中的元素是不可變的,不能修改。 ```python coordinates[0] = 15 # 會引發錯誤 ``` --- ### 集合 (Set)(不重複的 List ; List 的種類) - **創建和使用集合** - **集合的特色** - **無序性**:集合中的元素是無序的,不能通過索引訪問。 - **唯一性**:集合中的元素是唯一的,重複的元素會被自動去重。 - **可變性**:集合本身是可變的,可以添加或刪除元素,但集合中的元素必須是不可變的。 - **用途** - **去除重復**:可以用集合來去除列表中的重複元素。 - **集合操作**:可以進行集合的交集、並集和差集操作。 - **檢查成員**:可以快速檢查一個元素是否在集合中。 - **創建集合**:可以使用大括號 `{}` 創建集合。 ```python fruits_set = {"apple", "banana", "cherry"} numbers_set = {1, 2, 3, 4, 5} ``` - **添加元素**:使用 `add()` 方法添加元素到集合。 ```python fruits_set.add("orange") print(fruits_set) # 輸出: {'apple', 'banana', 'cherry', 'orange'} ``` - **刪除元素**:使用 `remove()` 方法刪除指定元素。 ```python fruits_set.remove("banana") print(fruits_set) # 輸出: {'apple', 'cherry', 'orange'} ``` - **集合操作**: - **交集**:使用 `&` 或 `intersection()` 方法。 ```python a = {1, 2, 3} b = {3, 4, 5} print(a & b) # 輸出: {3} ``` - **聯集**:使用 `|` 或 `union()` 方法。 ```python print(a | b) # 輸出: {1, 2, 3, 4, 5} ``` - **差集**:使用 `-` 或 `difference()` 方法。 ```python print(a - b) # 輸出: {1, 2} ``` --- ### 字典 (Dictionary)(有標題的 List ) - **創建和使用字典** - **字典的特色** - **鍵值對**:字典是由鍵值(key, value)對組成的,每個鍵對應一個值。 - **無序性**:在 Python 3.7 之前,字典是無序的;從 Python 3.7 開始,字典保留插入順序。 - **可變性**:字典是可變的,可以修改、添加或刪除鍵值對。 - **用途** - **存儲映射關係**:適合用來存儲數據之間的映射關係,例如用戶信息、配置參數等。 - **高效查找**:可以快速查找、插入和刪除數據。 - **結構化數據**:可以用來存儲結構化數據,例如 JSON 對象。 - **創建字典**:可以使用大括號 `{}` 創建字典。 ```python country2Continent = {'Taiwan': 'Asia', 'USA': 'North America', 'Germany': 'Europe', 'Kenya': 'Africa', '阿拉伯聯合大公國' : '亞洲'} ``` - **訪問元素**:通過鍵訪問字典中的值。 ```python print(country2Continent['Taiwan']) print(country2Continent['Germany']) print(country2Continent['阿拉伯聯合大公國']) ``` - **添加或修改元素**:直接通過鍵賦值。 ```python country2Continent['阿拉伯聯合大公國'] = 'Asia' country2Continent['Turkey'] = 'Asia' print(country2Continent) ``` - **刪除元素**:使用 `del` 關鍵字刪除指定鍵值對。 ```python del country2Continent['Turkey'] print(country2Continent) country2Continent['Türkiye'] = 'Asia' print(country2Continent) ``` - **遍歷字典** - **常見需求** 1. **只列鍵** 2. **只列值** 3. **同時拿到鍵和值** 4. **需要索引/排序時的遍歷** ```python # 1. 遍歷鍵(預設行為) for country in country2Continent: # 同 for country in country2Continent.keys() print(country) # 2. 遍歷值 for continent in country2Continent.values(): print(continent) # 3. 同時遍歷鍵和值 for country, continent in country2Continent.items(): print(f"{country} ➜ {continent}") # 4. 需要索引時 for idx, (country, continent) in enumerate(country2Continent.items(), start=1): print(f"{idx}. {country} 位於 {continent}") # 5. 依字母排序後再遍歷 for country in sorted(country2Continent): print(country, country2Continent[country]) ``` ## 第五章:函式 ### **基本函式定義和調用** - **定義函式**:使用 `def` 關鍵字定義函式。 ```python def greet(name): return f"Hello, {name}!" # f 是因為會回傳變數 ``` - **調用函式**:通過函式名和參數調用函式。 ```python print(greet("Alice")) # 輸出: Hello, Alice! ``` - **默認參數值**:可以為參數設置默認值。 ```python def greet(name="World"): return f"Hello, {name}!" print(greet()) # 輸出: Hello, World! print(greet("Bob")) # 輸出: Hello, Bob! ``` - **返回值**:函式可以返回一個值,使用 `return` 關鍵字。 ```python def add(a, b): return a + b result = add(3, 5) print(result) # 輸出: 8 ``` - **變數範圍** - 區分:Python 中變數可分為「全域變數(global)」與「區域變數(local)」。 - 區域變數:在函式內部定義,僅在該函式中有效。 ```python= def my_func(): x = 10 # x 是區域變數 print(x) my_func() print(x) # 會錯誤:x is not defined ``` - 全域變數:在函式外部定義,可以在多個函式中被讀取(但要修改必須使用 global)。 ```python= def my_func(): global x # x 改為全域變數 x = 10 print(x) my_func() print(x) # 可以正常顯示 x ``` 作業:寫一個函式判斷是不是質數 ```python= def isPrime(n): for i in range(2, n//2): if n % i == 0: return False return True print(isPrime(13)) print(isPrime(15)) ``` ## 第六章:模組與套件 ### 模組 - **介紹** - 模組 指的是一個包含 Python 代碼的文件,可以被其他 Python 程序導入和使用。模組讓我們可以把代碼拆分成更小、更易管理的部分,提高代碼的可讀性和重用性。 - Python 有兩種類型的模組: - **內建模組**:Python 自帶的模組,比如 `math`、`os` 等,這些模組可以直接導入使用。 - **自定義模組**:由開發者自己編寫的模組,通常是包含在一個 `.py` 文件中的代碼。 - **導入和使用內建模組** - **導入模組**:使用 `import` 來導入模組。導入後,可以通過模組名來使用模組內的函式和變量。 ```python import math # 導入內建的數學模組 # 使用 math 模組中的 sqrt() 函式來計算平方根 result = math.sqrt(16) print(result) # 輸出: 4.0 ``` - **導入模組中的特定功能**:有時我們只需要模組中的某個函式或變量,可以使用 `from ... import ...` 語句來導入特定的部分。 ```python from math import pi # 只導入 math 模組中的 pi 常量 print(pi) # 輸出: 3.141592653589793 ``` - **使用別名**:如果模組名稱太長或者與現有的變量名衝突,可以使用 `as` 為模組或函式設置別名。 ```python import math as m # 將 math 模組重命名為 m print(m.sqrt(25)) # 輸出: 5.0 ``` - **自定義模組** - **創建自定義模組**:將一些功能寫入一個 `.py` 文件中,即可將其視為一個模組。然後可以在其他文件中導入這個模組。 ```python # mymodule.py 文件 def greet(name): return f"Hello, {name}!" ``` - **導入自定義模組**:使用 `import` 導入自定義模組後,可以使用模組中的函式或變量。 ```python # 在其他文件中使用自定義模組 import mymodule message = mymodule.greet("Alice") print(message) # 輸出: Hello, Alice! ``` <!-- ## 第八章:簡單數據分析 [數據分析入門](https://intl.finebi.com/zh-TW/blog/excel-data-analysis) [Python 從入門到數據分析](https://medium.com/finformation%E7%95%B6%E7%A8%8B%E5%BC%8F%E9%81%87%E4%B8%8A%E8%B2%A1%E5%8B%99%E9%87%91%E8%9E%8D/python-%E5%BE%9E%E5%85%A5%E9%96%80%E5%88%B0%E6%95%B8%E6%93%9A%E5%88%86%E6%9E%90-%E7%AC%AC%E4%B8%80%E8%AC%9B-python-%E7%B0%A1%E4%BB%8B-python%E4%BB%8B%E7%B4%B9%E8%88%87%E5%88%9D%E6%8E%A2-958e909f49f8) [【Python實作】生活中的資料科學,用模型挑出高C/P智慧型手機](https://medium.com/finformation%E7%95%B6%E7%A8%8B%E5%BC%8F%E9%81%87%E4%B8%8A%E8%B2%A1%E5%8B%99%E9%87%91%E8%9E%8D/python%E5%AF%A6%E4%BD%9C-%E7%94%9F%E6%B4%BB%E4%B8%AD%E7%9A%84%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8-%E7%94%A8%E6%A8%A1%E5%9E%8B%E6%8C%91%E5%87%BA%E9%AB%98c-p%E6%99%BA%E6%85%A7%E5%9E%8B%E6%89%8B%E6%A9%9F-99752d3c7f0d) [【Python實作】Back to E’shanzen資料科學的商業分析](https://medium.com/finformation%E7%95%B6%E7%A8%8B%E5%BC%8F%E9%81%87%E4%B8%8A%E8%B2%A1%E5%8B%99%E9%87%91%E8%9E%8D/case-back-to-eshanzen%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8%E7%9A%84%E5%95%86%E6%A5%AD%E5%88%86%E6%9E%90-9fccd99cb38b) [利用集群分析掌握消費者輪廓,Python實作(一)](https://medium.com/finformation%E7%95%B6%E7%A8%8B%E5%BC%8F%E9%81%87%E4%B8%8A%E8%B2%A1%E5%8B%99%E9%87%91%E8%9E%8D/%E5%88%A9%E7%94%A8%E9%9B%86%E7%BE%A4%E5%88%86%E6%9E%90%E6%8E%8C%E6%8F%A1%E6%B6%88%E8%B2%BB%E8%80%85%E8%BC%AA%E5%BB%93-python%E5%AF%A6%E4%BD%9C-%E4%B8%80-7086082fbb2e) ### 使用pandas - 基本數據操作 ### 使用numpy - 基本數值計算 --> ## 結語 ### 推薦資源 [Python 教學-STEAM 教育學習網](https://steam.oxxostudio.tw/category/python/info/start.html) [Python 3 教程-runoob](https://www.runoob.com/python3/python3-tutorial.html) [Python 3 語法大全-HackMD](https://hackmd.io/@BlueLancaster/Python#%E8%AE%8A%E6%95%B8%E5%8F%8A%E5%9E%8B%E6%85%8B%E8%BD%89%E6%8F%9B) [Python基本語法-HackMD](https://hackmd.io/@yizhewang/Sk_yOs-zm?type=view#%E8%B3%87%E6%96%99%E5%9E%8B%E6%85%8B)