# Python筆記 ## Editor:桃園高中謝妤芊_110學年度第一學期自主學習 ## Visual Studio Code 1.撰寫程式檔案: 附檔名用py 2.執行程式: python 檔案名稱 3."**#**": 程式中的註解,寫給人看的,用來做紀錄、說明 4."**cls**": 清除終端機所有程式 ## 資料型態Data Type 資料為程式的基本單位。 > 不同型態做運算會出錯誤 > ex. '1' + 1 = TypeError > ### 數值型態 * 整數:int,是指不含小數點的數值 ex. `1, 123, 567` * 浮點數:float,是指包含小數點的數值 ex. `1.0, 3.14, 3.16` * 布林值:bool,此種資料型態只有兩個值:True及False ex. `True, False` ### 字串型態 Python字串資料型態(str)是變數值以一對雙引號(「"」)或單引號(「'」)包起來 * 字串:str ex. `"123", 'Hi', '小明說:"你好"'` 若字串需含有特殊字元如Tab、換行等,可在字串中使用「跳脫字元」 #### 跳脫字元 `\` : 以「\」為開頭,後面跟著一定格式的字元代表特定意義,讓加在後面的字元跳脫本身的意義而具有其他意義 ex. 1. `n`本身僅為字母,而`\n`則具有換行的功能 2. `\t` tab 3. `\\` 反斜線 4. `\"` 雙引號 * 字串會對內部的字元編號(索引),從0開始算起 > ex. s="Hello" 請輸出第一個H > print(s[0]) ## 變數 變數為用來儲存資料的自訂名稱。 * 新增變數 `變數名稱 = 資料(變數值)` #### 變數命名規則 * 變數名稱的第一個字母必須是大小寫字母、_、中文。 * 只能由大小寫字母、_、中文組成變數名稱。 * 英文字母大小寫視為不同變數名稱。 * 變數名稱不能與Python內建的表留字相同。 ## 輸出與輸入 Output & Input ### 輸出 Output print命令能列印指定項目的內容,語法為 ```py print(項目1,項目2......, sep=分隔字元, end=結束字元) ``` * 項目1,項目2...... : print命令可以一次列印多個項目資料,項目之間以逗號「,」隔開。 * sep : 分隔字元,如果列印多個項目,項目之間以分隔符號區隔,預算值為一個空白字元(" ") * end : 結束字元,列印完畢後自動加入的字元,預設值為換列字元("\n"),所以下次執行print命令會出現在下一列。 * sep & end 一般來說當輸出兩個以上的東西,預設以空格分開,並且會換行 例如: a = 123 , b = 456 , 請輸出`123456` , `123,456` ```py print(a, b) #123 456 ``` ```py print(a, b, sep='') #123456 print(a, b, sep=',') #123,456 ``` 以此類推`end= `是一樣的用法,只是用在句尾 #### 參數格式化 print命令格式化字串,之後使用%接上一個tuple,語法為 ```py print (項目 % (參數列)) ``` ### 輸入 Input ```py 變數 = input([提示字串]) ``` 「提示字串」是輸出一段提示訊息,告知使用者如何輸入。輸入資料時,當使用者按下Enter 鍵後就視為輸入結束,input 命令會將使用者輸入的資料存入變數中。 * 使用input命令時,使用者輸入的資料型態為字串 ## 判斷式 判斷式:根據關係運算或邏輯運算的條件式來判斷程式執行的流程,若條件式結果為True,就執行跳躍。 在判斷式內又包含判斷式稱為巢狀判斷式 ### 單向判斷式(if...) ```py if (條件式): 程式區塊 ``` ### 雙向判斷式(if...else) ```py if (條件式): 程式區塊一 else: 程式區塊二 ``` ```py if (條件式一): 程式區塊一 elif(條件式二): 程式區塊二 elif(條件式三): 程式區塊三 ...... [else:] 程式區塊else ``` * 注意「:」和「縮排」 ## 迴圈 根據關係運算或邏輯運算條件式的結果為True 或False 來判斷,以決定是否重複執行指定的程式。 ### range函式單一參數 ```py 數列變數 = range(整數值) ``` 例如: ```py list1 = range(5) #數列為0,1,2,3,4 ``` ### range函式兩個參數 ```py 數列變數 = range(起始值,終止值) ``` 例如: ```py list2 = range(3,8) #數列為3,4,5,6,7 ``` ### range函式三個參數 ```py 數列變數 = range(起始值,終止值,間隔值) ``` 例如: ```py list3 = range(3,8,2) #數列為3,5,7數列每次增加2 ``` ### for迴圈 ```py for 變數 in 數列: 程式區塊 ``` 例如: ```py for n in range(3) #產生0,1,2的數列 print(n, end=",") #產生結果為:0,1,2, ``` ### break語句 break語句是用來跳出一個循環語句,即停止執行一個循環語句,即是璇還條件尚未成為False或序列的項目還沒被完全跑完。 很重要的一點是,若跳出for或while循環,任何相應的循環else塊是不執行的。 例如: ```py for i in range (1,11): if (i==6): break print (i, end=",") #執行結果1,2,3,4,5, ``` ### continue語句 continue是來跳過當前循環塊中其餘的語句,繼續循環的下一次迭代。 例如: ```py for i in range (1,11): if (i==6): continue print (i, end=",") #執行結果1,2,3,4,5,6,7,8,9,10, ``` ### while迴圈 主要用於沒有固定次數的迴圈,此方式是先檢查條件式成立才執行程式區塊,宣告方式如下。 ```py while(條件式) 程式區塊 ``` while迴圈使用時要特別注意必須設定條件判斷的中止條件,以便停止迴圈的進行,免得陷入無限迴圈的窘境。 ## 串列List 串列(又稱為清單或列表),與其他語言的「陣列(Array)」相同,其功能與變數類似,是提供儲存資料的記憶體空間。 串列中各個元素資料型態可以相同,也可以不同。 ### 串列宣告 #### 一維陣列宣告 ```py 串列名稱 = [元素1,元素2,…] ``` #### 空串列 例如: ```pylist4=[]``` #### 多維串列宣告 例如: ```py list5=[["dog","1234"],["cat","abcd"],["star","5678"]] print(list5[1]) #["cat","abcd"] print(list5[1][1]) #cat ``` #### 讀取串列元素 * 語法: ```py 串列名稱 [索引] ``` 注意索引值是從0開始計數 #### 改變串列元素 ```py 串列名稱[索引]=元素內容 ``` #### 串列搜尋與計次 ##### index()搜尋 * 語法: ```py 索引值 = 串列名稱.index(串列元素) ``` 例如: ```py list1 = ["A","B","C"] n = list1.index("B") #n=1 m = list1.index("D") #ValueError: 'D' is not in list ``` ##### count()計算次數 * 語法: ```py 次數=串列名稱.count(串列元素) ``` 例如: ```py list2 = ["A","B","C"] n = list2.count("C") #n=1 m = list1.index("D") #m=0 ``` #### 增加串列元素 ##### append()方法 * 語法: ```py 串列名稱.append(元素值) ``` 例如:在list1最後面增加一個串列,「加油」 ```py list1 = [1,2,3] list1.append("加油") #list1=[1,2,3,'加油'] ``` ##### insert()方法 * 語法: ```py 串列名稱.insert(索引值,串列元素) ``` 例如: 在list2串列索引2的位置插入一個串列元素「加油」 ```py list2 = [1,2,3] list2.insert(2,"加油") #list1=[1,2,'加油',3] ``` #### 刪除串列元素 ##### remove()方法 (當不確定所要刪除的元素索引時) * 語法: ```py 串列名稱.remove(串列元素) ``` 例如: ```py 刪除list1串列中「D」的串列元素 list1 = ["A","B","C","D"] list1.remove("D") #list1=[A,B,C] ``` ##### pop()方法 (i.e read then delete) * 語法: ```py 串列名稱.pop([index]) ``` 例如: ```py list2 = [1,2,3,4,5,6] n = list.pop() #n=6, list2=[1,2,3,4,5] n = list.pop(2) #n=3, list2=[1,2,4,5] ``` ##### del刪除串列元素 (此為python的指令,非list method) * del刪除串列單一元素的語法: ```py del串列名稱[n1] ``` * del刪除串列指定範圍元素的語法: ```py del串列名稱[n1:n2[:n3]] ``` 例如: ```py list1 = [1,2,3,4,5,6] del list1[1] #list1=[1,3,4,5,6] list2 = [1,2,3,4,5,6] del list2[1:5:2] #刪除索引第1、3的串列元素 ``` #### 串列排序 ##### sort()由小到大排序 * 語法: ```py 串列名稱.sort() ``` 例如: ```py將list串列由小到大排序 list1 = [3,2,1,5] #[3,2,1,5] list1.sort() #list1 = [1,2,3,5] ``` ##### reverse()反轉串列順序 * 語法: ```py 串列名稱.reverse() ``` 例如: ```py將list2串列順序反轉 lsit1=[3,2,1,5] #[3,2,1,5] list1.reverse() #[5,1,2,3] ``` ## 元組Tuple ### 建立元組 * 語法: ```py 元組名稱 = (元素1,元素2,...) ``` 例如: ```py tuple1 = (1,2,3,4,5) #元素皆為整數 tuple2 = (1,"太陽",True) #包含不同資料型態元素 ``` 元組的使用方式與串列相同,但不能修改元素值,否則會產生錯誤 因此元組又稱為「不能修改的串列」 ## 資料結構 ### list:有順序、可動的列表 ex. `[3,4,5] , ["Hello","World"]` ### Tuple:有順序、不可動的列表 ex. `(3,4,5) , ("Hello","World")]` ### Set:集合 ex. `{1,2,3},{"Hello","World"}` ### Dictionary:字典 ex. `{apple:蘋果,data:資料}`