【連載】《零基礎(chǔ)學(xué)Python》筆記(四)

摘要:《零基礎(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ù)的入口数初,按照書中來的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唆铐,一起剝皮案震驚了整個濱河市淮菠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌存淫,老刑警劉巖耘斩,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異桅咆,居然都是意外死亡括授,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門岩饼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荚虚,“玉大人,你說我怎么就攤上這事籍茧“媸觯” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵硕糊,是天一觀的道長院水。 經(jīng)常有香客問我,道長简十,這世上最難降的妖魔是什么檬某? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮螟蝙,結(jié)果婚禮上恢恼,老公的妹妹穿的比我還像新娘。我一直安慰自己胰默,他們只是感情好场斑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著牵署,像睡著了一般漏隐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奴迅,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天青责,我揣著相機(jī)與錄音,去河邊找鬼。 笑死脖隶,一個胖子當(dāng)著我的面吹牛扁耐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播产阱,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼婉称,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了构蹬?” 一聲冷哼從身側(cè)響起王暗,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怎燥,沒想到半個月后瘫筐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铐姚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年策肝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隐绵。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡之众,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出依许,到底是詐尸還是另有隱情棺禾,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布峭跳,位于F島的核電站膘婶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蛀醉。R本人自食惡果不足惜悬襟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拯刁。 院中可真熱鬧脊岳,春花似錦、人聲如沸垛玻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帚桩。三九已至亿驾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間账嚎,已是汗流浹背颊乘。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工参淹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留醉锄,地道東北人乏悄。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像恳不,于是被迫代替她去往敵國和親檩小。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 控制流 Swift提供了各種控制流程語句烟勋。這些包括while循環(huán)多次執(zhí)行任務(wù); if规求,guard以及switch基...
    Fuuqiu閱讀 373評論 0 0
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,342評論 0 2
  • Swift 提供了類似 C 語言的流程控制結(jié)構(gòu),包括可以多次執(zhí)行任務(wù)的for和while循環(huán)卵惦,基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 703評論 1 1
  • 本章將會介紹 控制流For-In 循環(huán)While 循環(huán)If 條件語句Switch 語句控制轉(zhuǎn)移語句 continu...
    寒橋閱讀 717評論 0 0
  • [The Swift Programming Language 中文版]本頁包含內(nèi)容: Swift提供了多種流程控...
    風(fēng)林山火閱讀 565評論 0 0