python
程式執行的三種邏輯:「循序」、「判斷」與迴圈,程式不會永遠從頭到尾全部執行,而是會因為時間、情況或是使用者的操作而產生不同的執行結果,因此有了「判斷」因狀況不同而執行不同的程式碼或是重複執行相同一段程式碼數次。
if
分支判斷格式:
注意
流程內的程式碼一定要縮排。
分支判斷可以用來根據判斷來決定是否要執行某一段程式碼,例如:
datetime.date.today().weekday()
會回傳今天是星期幾,0 = 星期一,6 = 星期日,中間以此類推。datetime
是Python內建的外部模組,所以必先import datetime
這個模組。if
判斷式的最後加上冒號「:」代表是判斷式區塊程式碼的開頭,接下來區塊程式碼必須全部縮排一個TAB或至少一個空白以上(建議是4個空白字元),每一行都必須對齊,也不可以混用TAB與空白字元,否則會出現錯誤無法執行。if
判斷式區塊內的程式碼。格式:
例如:
會輸出:
如果只是單純的判斷後結果只有兩種「是」或「不是」,Python有個更簡潔的語法,例如:
判斷是成立,會回傳if
前面的值,否則回傳else
後面的值,等同於:
更多範例:
如果條件運算式結果為True,則執行運算1,反之執行運算式2,其效果等同於:
例如:
使用單行if可以寫成:
但是有個限制,運算式1和運算式2中不可以有「指派運算子」或「算術指派運算子」,例如:
不可以寫成:
而是:
while
迴圈格式:
範例:
輸出範例:
更多範例:
印出list內所有元素:
九九乘法:
輸出為:
畫出6x6正方形:
抽籤範例:
for in
迭代如果想要從字串、list、tuple、set或是map中一個一個值取出來做處理(此作法又稱為迭代),可以使用for in迴圈。
格式:
例如迭代list:
會輸出:
說明:
for in迴圈會迭代data群集變數裡的每個值,一個一個取出來,放到e這個變數裡,迴圈每跑一次就會取出一個值放到e變數。
range()函式用來產生數字,格式為:
range(start, stop[, step])
start省略時預設為0,step省略時預設為1
例如:
zip()函式用來將兩個序列內的元素,像拉鍊一樣一對一配對起來並產生一個新的list,每個配對的元素為tuple,例如:
會輸出:
輸出:
學校有學生 小明, 小白, 小黃, 小花, 小A參加歌唱比賽,需要抽籤決定順序,請幫忙寫一程式來公平的決定順序
輸入範例:
程式碼如下:
迭代時會產生序列的索引值,例如:
結果為:
a = [1, 4, 99, 125, 88]
並顯示在畫面上。pass
如果在某個程式碼區塊不想做任何事情,或是之後才會寫些程式碼,就可以先放個pass
,例如:
pass
什麼事情都不會做,就只是用來維持程式碼結構的完整性。
break
用來跳離迴圈,迴圈內只要遇到break
都會立即結束迴圈。
continue
用在迴圈內,在迴圈內只要遇到continue
就會直接忽略迴圈內剩下的程式碼,馬上進行下一次的迴圈(或迭代)。
例如:
會輸出:
範例:
for
Comprehension將一個list經過計算轉換後存到另一個list是很常見的操作,Python針對這樣的動作提供了更簡潔的語法,for Comprehension。
例如:將一個list內的值全部平方
一般寫法:
輸出:
for Comprehension寫法:
例如:取得list中的偶數存到新的list
原本的寫法:
輸出:
for Comprehension寫法:
計算指定序列內數字的加總,例如:
會得到6