# 3/19 Python與資料分析#3 - 流程控制 ## 目的 1. 迭代,某件事要跑很多次 2. 某些條件下才要跑某些敘述 ## 條件敘述(Condition)的要件 1. 條件敘述必須可以被判定True/False 比較運算:== != > < >= <= in not in 邏輯運算:and or not 2. 用縮排表示結構(同一層縮排空隔數一致即可,常用tab,IDE也會根據需要自動縮排) ## Condition if :conditional executions if/else :alternative executions if/elif.../else :chained condition 有else可以讓所有條件都被考慮到 也可以巢狀多層使用 ### if if if vs if elif else 如果條件完全互斥,兩者意思一樣 若條件有交集,結果可能不一樣 (elif else會依照順序判斷,判斷過就不會再做了,不同順序跑出來的結果可能不一樣) ## 迭代Iteration Star/Stop/Step ### for - 把Step當成可以某個可以迭代的對象/結構,若進行到該對象的結尾就停止 ``` for i in ITERABLE:#Star/Stop/Step #Statement ``` ITERABLE可以是: * 直接給定一個list/tutple * str(一個一個字往下)(int float bool都不能) 以上都只要寫 for i in list或字串或其名稱 * in range(起, 終但不包含, 間隔) * dictionary a是個dic a.keys() a.values() a.items() 以上就會是有key/value/all的結構 for i in a.keys() for i in a.values() for i j in a.items() 需要兩個變數,若print會用tuple呈現 #### iter() next() a = iter("abcd") print(next(a)) 打一次就可以輸出一個字 #### range: type(range()) = range print(range()) = range() list(range()) 可用list形式輸出所有資料(在迴圈裡面不用寫這個) ### while - 若contidion是True就繼續運行,自行創造間隔跟起始終點 ``` i=0 #Start while 某個condition: #Stop的時機(false的時候) #Statement i = i+1 #Step 也可以寫成i+=1 ``` #### while vs for 給定特定可迭代對象:推薦用for 迭代對象不確定且重複性任務出現隨機或不確定性:可用while 可以視覺化程式碼的網站 http://www.pythontutor.com/visualize.html#mode=edit ## 迭代的時機 印出、取得想要的資料或合併(combination)、加總或計數、朝狀結構整理... combination: 先製造空的list,再append要的東西進去 簡單的計數加總可以使用sum()、len() 巢狀整理舉例(取得dic的資料,使用dic的迭代) ``` batman_trilogy = { "titles": ["Batman Begins", "The Dark Knight", "The Dark Knight Rises"], "release_dates": ["June 15, 2005", "July 18, 2008", "July 20, 2012"], "director": ["Christopher Nolan", "Christopher Nolan", "Christopher Nolan"] } for v in batman_trilogy.values(): # 剝去最外層 for i in v: # 往內剝 print(i) # 輸出: Batman Begins The Dark Knight The Dark Knight Rises June 15, 2005 July 18, 2008 July 20, 2012 Christopher Nolan Christopher Nolan Christopher Nolan ``` ### 迭代特殊情況語法 break 提早結束迴圈 continue 略過後面的敘述,繼續迴圈 ###### tags: `python` `資料分析`