摘要:《零基礎(chǔ)學(xué)Python》一書的學(xué)習(xí)記錄瓤的,學(xué)習(xí)筆記。(連載之四)
回顧:昨天簡單地學(xué)習(xí)了Python中的數(shù)據(jù)類型吞歼,數(shù)字和字符串圈膏,以及 算數(shù)表達(dá)式和和邏輯表達(dá)式。
Python的控制語句
Python的控制語句由條件判斷語句篙骡、循環(huán)語句構(gòu)成稽坤。
結(jié)構(gòu)化程序設(shè)計(jì)
結(jié)構(gòu)化程序設(shè)計(jì)類似于施工首先打好圖紙(或圖紙了然于胸),然后按照圖紙一步一步走下去医增。我們數(shù)學(xué)上曾經(jīng)接觸過的程序框圖就是一種重要的圖紙慎皱。
條件判斷語句
條件判斷語句用于檢測某個條件是否成立;如果成立叶骨,則執(zhí)行if語句內(nèi)的內(nèi)容,否則跳過if語句祈匙,執(zhí)行后面的內(nèi)容忽刽。
if語句的格式如下
if(表達(dá)式):
語句1
else
語句2
if語句將判斷“表達(dá)式”的布爾值,若為真夺欲,則執(zhí)行語句1跪帝,否則,執(zhí)行語句2.其中也可以不使用else及其子句些阅;表達(dá)式兩遍的括號也可以省略伞剑。
if...elif..else判斷語句
if(表達(dá)式1):語句1
elif(表達(dá)式2):語句2
...
elif(表達(dá)式n):語句n
else:語句n+1
if...elif..else判斷語句相當(dāng)于是對if...else語句的補(bǔ)充,彌補(bǔ)它的不足市埋,含義也是一目了然黎泣。
switch語句的替代方案
在其他高級語言中恕刘,switch語句也可以用于編寫多分支結(jié)構(gòu)的程序,功能類似于if...elif...else抒倚,卻更為清晰褐着;結(jié)構(gòu)如下:
switch(表達(dá)式){
case 常量表達(dá)式1: 語句1
case 常量表達(dá)式2: 語句2
...
case 常量表達(dá)式n: 語句n
default: 語句n+1
}
執(zhí)行switch時,首先判斷“表達(dá)式”的值托呕,與常量表達(dá)式1~n進(jìn)行比較含蓉,比對成功則執(zhí)行對英語劇,若無相同的常量表達(dá)式项郊,執(zhí)行default后語句馅扣。
遺憾的是Python并不支持switch,但是可以使用其他方案來實(shí)現(xiàn)switch的功能:
實(shí)現(xiàn)方法分為兩步着降,首先岂嗓,定義一個字典,字典是由鍵值對組成的集合鹊碍,(關(guān)于字典的內(nèi)容將在后續(xù)數(shù)據(jù)結(jié)構(gòu)中介紹)厌殉,在通過調(diào)用字典的get()獲取相應(yīng)的表達(dá)式。
# 使用字典實(shí)現(xiàn)switch語句
from __future__ import division
x = 1
y = 2
operator = "/"
result = {
"+" : x + y,
"-" : x - y,
"*" : x * y,
"/" : x / y
}
print (result.get(operator))
關(guān)于第一行from __future__ import division
侈咕,意味導(dǎo)入Python未來支持的語言特征division(精確除法)公罕,即1/2不再等于0,而是等于0.5耀销,前者我們稱為截斷除法楼眷,后者稱為精確除法。
循環(huán)語句
循環(huán)語句是指重復(fù)執(zhí)行同一段代碼塊熊尉,通常用于遍歷集合或者累加計(jì)算罐柳。有while循環(huán)語句和for循環(huán)語句。
while循環(huán)
while(表達(dá)式):
...
else:
...
當(dāng)循環(huán)表達(dá)式(while后的“表達(dá)式”)為真時狰住,執(zhí)行while中的語句张吉,知道表達(dá)式為False,程序的流程轉(zhuǎn)到else語句中催植,其中else子句可以省略肮蛹,表達(dá)式兩側(cè)的括號也可以省略。
for循環(huán)
for 變量 in 集合:
...
else:
...
每次循環(huán)從集合中取出一個值创南,并把該值賦給變量伦忠。集合可以是元組、列表稿辙、字典等數(shù)據(jù)結(jié)構(gòu)昆码,其中else子句可以省略。最后一次循環(huán)結(jié)束后將執(zhí)行else子句。
for循環(huán)經(jīng)常與range()函數(shù)一起使用赋咽,range()返回一個列表旧噪,for...in...遍歷列表中的元素。在實(shí)例中會加深理解冬耿,說再多不如試一遍效果好舌菜,下面將會把書中的習(xí)題演示一遍。亦镶。
break和continue語句
break語句可以使程序跳出循環(huán)日月,continue則會終止此次循環(huán),執(zhí)行下一輪循環(huán)缤骨。
習(xí)題
1.Python中break和continue語句有什么不同爱咬?分別在什么情況下使用?
答:前面已經(jīng)提到過绊起,break用來跳出循環(huán)精拟,continue也用來跳出循環(huán),與break不同的是虱歪,continue不會跳出整個循環(huán)體蜂绎,只是跳過當(dāng)前循環(huán),繼續(xù)執(zhí)行后面的循環(huán)笋鄙。
2.使用結(jié)構(gòu)化編程思想實(shí)現(xiàn)冒泡排序师枣。
#-*- coding:utf-8 -*-
# 冒泡排序
def bubbleSort(numbers):
for j in range(len(numbers) - 1, -1, -1):
for i in range(j):
if numbers[i] > numbers[i+1]:
numbers[i], numbers[i+1] = numbers[i+1],
numbers[i]
print (numbers)
def main():
numbers = [23, 12, 9, 15, 6]
bubbleSort(numbers)
if __name__ == '__main__':
main()
range()函數(shù)有三個參量,第一個start表示列表開始的值萧落,默認(rèn)為0践美;第二個參數(shù)stop表示列表結(jié)束的值,這個參數(shù)不可缺少找岖;第三個參數(shù)step表示步長陨倡,即每次遞增遞減的值,默認(rèn)為1许布。
冒泡排序的原理:比較相鄰的元素兴革,如果前一個大于后一個,就交換它們(以從小到大為例)爹脾,對每一組相鄰元素做同樣的工作帖旨,需要操作的對數(shù)逐漸減少,從第一對到最后一對灵妨,直到?jīng)]有任何一對需要比較。
循環(huán)的嵌套落竹,第一層循環(huán)j限定了i的范圍泌霍,從列表的長度數(shù)減一,遞減1直到-1;也就是說j的范圍為4到0,朱转。
第二層循環(huán)省略了start和step祭务,stop的值為j螟左,也就是說i的范圍為0到j(luò)-1;在這層循環(huán)體中執(zhí)行了以此比較相鄰的數(shù)的功能。
最后定義主函數(shù)以及主函數(shù)的入口数初,按照書中來的。