# Python 程式設計入門筆記 這份筆記是成功大學「Python程式設計入門」的課程筆記整理,紀錄9/12-10/3之課程內容。 ## Lecture1:變數、資料型別、運算符號 ### 1. 變數(Variables): 在Python中,你可以使用變數來存儲不同類型的數據,包括整數、浮點數、字符串、布林值等。 ### 2. 資料型別(Data Types): Python 常見的資料型別有: * **整數(int)**:用於表示整數值,例如 5, -10, 1000。 * **浮點數(float)**:用於表示帶有小數部分的數字,例如 3.14, -0.5, 2.0。 * **字符串(str)**:用於表示文本,例如 "Hello, World!", "Python"。 * **布林值(bool)**:用於表示真假,只有兩個值 True 和 False。 * **列表(list)**:用於存儲多個數據項的有序集合。 * **元組(tuple)**:與列表類似,但是不可變的(不可修改)。 * **字典(dict)**:用於存儲鍵-值對的集合,類似於映射。 * **集合(set)**:用於存儲唯一的元素,不允許重複。 這邊提出一個範例,不然大家可能對後面那幾個比較陌生。 ```python= ID1 = {"C12345678", "A123456789", "F12398765"} # ID is a set/不那麼在意順序的-->集合 ID2 = ["C12345678", "A123456789", "F12398765"] # ID is a list/很在意順序-->列表 ID3 = ("C12345678", "A123456789", "F12398765") # ID is a tuple/很在意順序的,但不想被改變的 ``` 如果將他們印出,會得到以下結果: :::success * **set**:F12398765, C12345678, A123456789 * **list**:C12345678, A123456789, F12398765 * **tuple**:C12345678, A123456789, F12398765 ::: 這邊可以特別注意Python的印出順序,延續上面剛剛那個程式。 ```python= print(ID2[0]) # 從前面數來第1個 index=0 --> 1 print(ID2[1]) print(ID2[2]) # print(ID2[3]) # list index out of range print(ID2[-1]) # 從後面數來第1個 print(ID2[-2]) print(ID2[-3]) print(ID2[-4]) # list index out of range ``` :::success 會印出:C12345678, A123456789, F12398765, F12398765, A123456789, C12345678 而最後一行因為超出範圍,會噴出**IndexError: list index out of range** ::: :::danger :warning: 可以發現數字必須從0開始數過來,而倒著數的話則是從-1開始。 ::: ### 3. 運算符號(Operators): * **數學運算符號**:用於執行數學運算,如加法 +、減法 -、乘法 、除法 /、取餘 % 等。 * **比較運算符號**:用於比較兩個值,如相等 ==、不等 !=、大於 >、小於 <、大於等於 >=、小於等於 <= 等。 * **邏輯運算符號**:用於執行邏輯操作,如且 and、或 or、非 not 等。 * **賦值運算符號**:用於將值賦予變數,如 =、+=、-=、=、/= 等。 * **位元運算符號**:用於執行位元級操作,如位元與 &、位元或 |、位元反轉 ~ 等。 ### 4. 其他重點: 我覺得以下語法很容易搞混,因此需要特別筆記。 ```python= x = 10 y = 3 result_divide = x / y # 除法,結果是浮點數 result_floor_divide = x // y # 取整除法,結果是整數 result_modulus = x % y # 求餘數 ``` 以上程式碼會產生這樣的結果: :::success 除法結果: 3.3333333333333335 取整除法結果: 3 求餘數結果: 1 ::: --- ## Lecture2:條件語句、迴圈、函數 ### 1. 條件語句(Conditional Statements): Python中的條件語句允許你根據不同的條件來執行不同的代碼,其中最常見的條件語句是if語句。 * **if語句**:用於執行一個代碼塊,如果指定的條件為真(True)。 ```python= if condition: # 在條件為真時執行的代碼 elif another_condition: # 在另一個條件為真時執行的代碼 else: # 如果上述條件都不滿足,則執行的代碼 ``` :::danger :warning: 不要忘記打冒號! ::: ### 2. 迴圈(Loops): 迴圈允許你多次執行相同的代碼,而不必重複編寫。Python中有兩種主要的迴圈: * **for迴圈**:用於遍歷序列(如列表、元組、字符串等)中的元素。 ```python= for item in iterable: # 對每個元素執行的代碼 ``` * **while迴圈**:在滿足指定條件的情況下,重複執行代碼。 ```python= while condition: # 在條件為真時重複執行的代碼 ``` ### 3. 函數(Functions): 函數是一個可以執行特定任務的代碼塊,並且可以多次調用以實現代碼的可重用性和組織性。 Python中定義函數的方式如下: ```python= def function_name(parameters): # 函數的代碼 return result ``` * **def**:定義函數的關鍵字。 * **function_name**:函數的名稱,你可以自己取名。 * **parameters**:函數的參數,用於接收外部傳遞的數據。 * **return**:可選的關鍵字,用於返回結果給調用函數的地方 --- ## Lecture3:類別、物件導向以及Python模組介紹 ### 1. 類別(Class): * 類別是一個用於定義對象(物件)的藍圖或模板,它定義了對象的特性(屬性)和行為(方法)。 * 類別中的特性稱為**屬性**(**Attributes**),特性是對象的特徵或數據。 * 類別中的行為稱為**方法**(**Methods**),方法是對象可以執行的操作。 * 在Python中,你可以使用class關鍵字來定義類別。 ```python= class MyClass: # 類別屬性 class_variable = 0 # 類別方法 def class_method(self): print("This is a class method.") # 初始化方法(建構函數) def __init__(self, data): # 實例屬性 self.instance_variable = data # 實例方法 def instance_method(self): print(f"This is an instance method with data: {self.instance_variable}") ``` ### 2. 物件導向(Object-Oriented Programming,OOP): * OOP是一種程式設計方法,它基於對象的概念,將數據和操作封裝到對象中,以實現模組化和可重用的程式碼。 * 在OOP中,對象是類別的實例,它包含**屬性**(**特性**)和**方法**(**行為**)。 * OOP的基本原則包括**封裝、繼承和多態性**。 ```python= # 創建類別的實例 obj1 = MyClass("Data for Object 1") obj2 = MyClass("Data for Object 2") # 調用實例方法 obj1.instance_method() # 輸出:"This is an instance method with data: Data for Object 1" obj2.instance_method() # 輸出:"This is an instance method with data: Data for Object 2" ``` ### 3. Python模組(Modules): * 模組是Python中的一個文件,包含了Python代碼,讓你可以組織和重用代碼。 * 模組中可以包含**類別、函數、變數**等,以實現代碼的組織性和可重用性。 * Python標準庫包含許多內置模組,並且你也可以創建自己的自定義模組。 * 使用**import**關鍵字來引入模組,以便在你的程式中使用它。 ```python= # 創建類別的實例 # 引入Python內置的math模組 import math # 使用math模組的函數 print(math.sqrt(25)) # 輸出:5.0 ``` --- ## Lecture4:輸入、輸出、除錯與例外處理 ### 1. 輸入(Input): * 在Python中,你可以使用**input()函式**來接收用戶的輸入。 * **input()函式**會等待用戶在命令行輸入一行文本,然後將輸入的文本作為字符串返回。 ```python= user_input = input("請輸入您的名字:") print("您輸入的名字是:" + user_input) ``` 以下是更多的程式範例: ```python= #假設我輸入a=2,b=3 a = input("a=") b = input("b=") print(a+b) #會輸出23 print(type(a)) #會顯示a是str print(int(a)+int(b)) #顯示出5 ``` :::danger :warning: 特別注意這裡輸入的資料型別式string,所以當我想要做數學運算時必須先轉換型別。 ::: ### 2. 輸出(Output): * Python使用**print()函式**來將數據輸出到控制台。 * 你可以使用**print()函式**來輸出文字、變數、計算結果等。 ```python= name = "Alice" print("Hello, " + name + "!") ``` ### 3. 開啟文件並撰寫或讀取: 要使用Python打開文件並寫入內容,你可以使用內置的**open()函式**。以下是一個基本的示例,演示如何打開文件、寫入內容並關閉文件: #### **==寫入模式==** ```python= # 打開文件以寫入模式 file_path = 'my_file.txt' # 替換成你想要的文件路徑和名稱 with open(file_path, 'w') as file: # 使用文件物件寫入內容 file.write("這是要寫入的文本。\n") file.write("這是另一行文本。\n") # 文件將在離開with區塊後自動關閉 ``` * 使用open()函式打開文件,並指定文件路徑和模式(**'w'表示寫入模式**)。 * 如果文件不存在,將創建一個新文件;如果文件已存在,則原有內容將**被清除**。 * 使用**with語句**,確保在退出with區塊後文件被自動關閉,這樣可以確保數據被寫入文件並且文件被正確關閉,不會出現資源泄漏。 * 使用**file.write()方法**將文本寫入文件。你可以使用多個file.write()語句寫入多行文本。 * 在文本中,**\n用於表示換行**,以便每一行的文本在文件中是獨立的行。 #### **==讀取模式==** ```python= # 打開文件以讀取模式 file_path = 'my_file.txt' # 替換成你的文件路徑和名稱 with open(file_path, 'r') as file: # 讀取整個文件內容 file_contents = file.read() print(file_contents) ``` * 使用open()函式打開文件,並指定文件路徑和模式(**'r'表示讀取模式**)。這將允許你從文件中讀取內容。 * 使用with語句,確保在退出with區塊後文件被自動關閉,以避免資源洩漏。 * 使用**file.read()方法**讀取整個文件的內容,並將其存儲在**file_contents**變數中。 * 最後,你可以打印或處理file_contents變數中的文件內容。 * 如果你想逐行讀取文件,可以使用**file.readline()**或**for迴圈**進行逐行讀取。 ### 4. 除錯(Debugging): * 除錯是在程式碼中尋找和修復錯誤的過程。 * Python提供了許多工具和技術來幫助你除錯,包括使用print()語句輸出變數的值、使用IDE的除錯工具、使用pdb模組進行交互式除錯等。 ```python= def divide(a, b): result = a / b return result num1 = 10 num2 = 0 try: result = divide(num1, num2) except ZeroDivisionError: print("除以零錯誤") else: print("結果:", result) ``` ### 5. 例外處理(Exception Handling): * 例外處理是一種程式設計技術,用於處理和管理代碼執行中可能發生的錯誤(異常)情況。 * 在Python中,你可以使用**try**和**except**塊來捕獲和處理異常,以確保程序不會崩潰。 ```python= try: # 可能出現異常的代碼 x = 1 / 0 except ZeroDivisionError: print("除以零的錯誤") except Exception as e: print(type(e)) print(f"其他錯誤: {e}") finally: print("這段代碼總是會執行") ``` --- ## Reference [ChatGPT Python程式設計協助](https://chat.openai.com/share/7b814541-5cc1-4132-885c-279ca2cb7944) 國立成功大學「Python程式設計入門」上課內容 舒宇宸教授