# Python - Day 1 ###### tags: `Python` ## 資料型態 * 數字 Number * int, float ```python= 3456 #整數 3.5 #float ``` * 字串 String * 任意的文字內容 ```python= "test" #string ``` * 布林值 Bool * 表達正確(true)或錯誤(false) ```python= True #bool False ``` * 可變列表 list * 有順序、可變動的資料集合 ```python= [3,4,5] #list(有順序) ["Hello" , "World"] #中括號加上用逗號隔開 ``` * 固定列表 Tuple * 有順序、不可變動的資料集合 ```python= (3,4,5) #tuple(有順序) ("Hello" , "World") #小括號加上用逗號隔開 ``` * 集合 set * 無順序的資料集合 ```python= {3,4,5} #set(無順序) {"Hello" , "World"} #大括號加上用逗號隔開 ``` * 字典 * 鍵值對(Key-Value Pair)的集合 ```python= {"Apple" : "頻果" , "data" : "資料" } #dictionary #{ 鍵 : 值 }的配對 ``` * 變數 * 可用來存放資料的自訂名稱 ```python= #Variable data = 1 #變數名稱 = 資料 ``` ## 基本運算 ### 四則運算 ```python= x = 3 + 6 print (x) x = 3 - 6 print (x) x = 3 * 6 print (x) x = 3 / 6 #小數除法 print (x) x = 3 // 6 #整數除法 print (x) x = 2 ** 3 #次方 print (x) x = 2 ** 0.5 #根號 print (x) x = 7 % 2 #取餘數 print (x) ``` ### 字串 1. 內部字元編號由0開始 2. 字串基本運算 ```python= s = "Hello" print ( s ) s = 'Jimmy' print ( s ) s = "hell\'0\'" print ( s ) s = "hell0" + "World" #字串串接 print ( s ) s = "hell0" "World" #字串串接 print ( s ) s = "Hello World\n" #跳行 print ( s ) s = '''Hello World''' #跳行(三個單引號 或 三個雙引號)(用來寫多行程式) print ( s ) s = r"Raw string. \n\r\b as u see, escape characters don't work." print ( s ) # output: Raw string. \n\r\b as u see, escape characters don't work. # it's useful when using regular expression s = u"\u00dcnic\u00f6de" # unicode print ( s ) # output: Ünicöde s = "Hello" * 3 #產生三個Hello print ( s ) ``` 3. 字串切片 ```python= # syntax: # str[start_pos:end_pos:step] s = "Hello" print ( s[1:4] ) #冒號前是切分開頭 #冒號後是切分結尾(不包含該數字) s = "Hello" print ( s[:4] ) #冒號前沒有給就是從0(第一個字元開始) #冒號後是切分結尾(不包含該數字) s = r"Arcane" print ( s[1:-1] ) # output: rcan # the negative number means "count from the end" s = r" E##M##T " print ( s[1:-1:3] ) # output: EMT # it's equal to the c code: for(int i = 1; i <= 7; i+=3) putchar(s[i]) s = r"123456789" print ( s[::-1] ) # output: 987654321 # note that if the step < 0, the default value of start_pos is len(s)-1 ``` ### 有序列表 - List 1. 資料可變 2. 內部索引值由0開始 ```python= grades = [12, 60, 15, 70, 90 ] print ( grades ) print ( grades[0] ) grades[0] = 55 #更改列表中的資料 print ( grades ) print ( grades[1:4] ) #取得特定資料 #冒號前是取值開頭(第一個字元開始) #冒號後是取值結尾(不包含該數字) grades[1:4] = [] #刪除資料(變空白) #冒號前是取值開頭(第一個字元開始) #冒號後是取值結尾(不包含該數字) print ( grades ) grades = grades + [12, 33] #列表串接 print ( grades ) print ( len (grades) ) #取得列表長度 data = [[2,0],[3,0]] #巢狀列表 print ( data[0] ) #[2,0] print ( data[1][0] ) #[3] data [0][0:1] = [5,5,5] #列表 print ( data[0] ) #[5,5,5,0] ``` ### 有序列表 - Truple 1. 資料不可變 2. 操作與list類似 ```python= data = (3,4,5) #固定列表(小括號) print ( data ) data [0] = 5 #錯誤tuple不可更動 print ( data ) #[5,5,5,0] ``` ### 集合 set 1. 無順序之分 2. 有 (in) / (not in)語法 ```python= s1 = { 3, 4, 5 } print ( 3 in s1 ) #in 判斷字元是否在s1中 print ( 10 in s1 ) print ( 10 not in s1 ) ``` 3. 集合運算 ```python= s1 = {3, 4, 5} s2 = {4, 5, 6, 7} s3 = s1 & s2 #&(交集) print ( s3 ) s3 = s1 | s2 #|(聯集)重複元素不重複放 print ( s3 ) s3 = s1 - s2 #-(差集)對集合做減法 print ( s3 ) s3 = s1 ^ s2 #^(反交集)取不重疊的元素 print ( s3 ) ``` 4. 字串拆解成集合 ```python= s = set( "Hello" ) print ( "H" in s ) ``` ### 字典 1. 鍵(key)與值(value)的組合 ```python= dic = { "apple" : "蘋果" , "bug" : "蟲"} ``` 2. 可修改 ```python= dic = { "apple" : "蘋果" , "bug" : "蟲"} dic [ "apple" ] = "小蘋果" #修改「值」 print (dic["apple"]) ``` 3. (in/not in) operation ```python= print ( "test" in dic ) #in / not in operation print ( "test" not in dic ) ``` 4. 刪除(del)操作 (以key做標籤) ```python= print ( dic ) del dic [ "apple" ] #刪除 ( 以key做標籤 ) print ( dic ) ``` 5. 以list建置字典 (for ... in 為固定語法) ```python= dic = {x:x*2 for x in [3,4,5]} #(for ... in 為固定語法) print ( dic ) ```