官术网_书友最值得收藏!

3.1 選擇結(jié)構(gòu)

在Python中,選擇結(jié)構(gòu)的實(shí)現(xiàn)是通過if語(yǔ)句,if語(yǔ)句的常見語(yǔ)法是:

這表示的是,如果條件1成立就執(zhí)行代碼塊1;如果條件1不成立而條件2成立就執(zhí)行代碼塊2;如果條件1到條件n-1都不滿足,那么就執(zhí)行代碼塊n。

另外,其中的elif和else以及相應(yīng)的代碼塊是可以省略的,也就是說最簡(jiǎn)單的if語(yǔ)句格式是:

要注意的是,這里所有代碼塊前應(yīng)該是4個(gè)空格,原因稍后會(huì)提到,這里先看一段具體的if語(yǔ)句。

很容易得到結(jié)果:

這段代碼表示的含義就是,如果a小于5則輸出' a is smaller than 5.',如果a不小于5而小于6則輸出' a is smaller than 6.',否則就輸出' a is larger than 5.'。這里值得注意的是,雖然a同時(shí)滿足a<5和a<6兩個(gè)條件,但是由于a<5在前面,所以最終輸出為' a is smaller than 5.'。

if語(yǔ)句的語(yǔ)義非常直觀易懂,但是這里還有一個(gè)問題沒有解決,那就是為什么我們要在代碼塊之前空4格?

依舊是先看一個(gè)例子:

運(yùn)行這段代碼可以得到:

但是如果稍加改動(dòng),在print('done')前也加4個(gè)空格:

再運(yùn)行的話什么也不會(huì)輸出。

它們的區(qū)別是什么呢?對(duì)于第一段代碼,print(' done')和if語(yǔ)句是在同一個(gè)代碼塊中的,也就是說無(wú)論if語(yǔ)句的結(jié)果如何,print(' done ')一定會(huì)被執(zhí)行。而在第二段代碼中,print('done')和print('Impossible!')是在同一個(gè)代碼塊中的,也就是說如果if語(yǔ)句中的條件不成立,那么print('Impossible!')和print('done')都不會(huì)被執(zhí)行。

我們稱第二個(gè)例子中這種擁有相同縮進(jìn)的代碼為一個(gè)代碼塊。雖然Python解釋器支持使用任意多但是數(shù)量相同的空格或者制表符來對(duì)齊代碼塊,但是一般約定用4個(gè)空格作為對(duì)齊的基本單位。

另外值得注意的是,在代碼塊中是可以再嵌套另一個(gè)代碼塊的,以if語(yǔ)句的嵌套為例:

首先最外層的代碼塊是所有的代碼,它的縮進(jìn)是0,接著它根據(jù)if語(yǔ)句分成了三個(gè)代碼塊,分別是第5~10行,第12~18行,第20~27行,它們的縮進(jìn)是4,接著在這三個(gè)代碼塊內(nèi)又根據(jù)if語(yǔ)句分成了三個(gè)代碼塊,其中每個(gè)print語(yǔ)句是一個(gè)代碼塊,它們的縮進(jìn)是8。

從這個(gè)例子中可以看到代碼塊是有層級(jí)的,是嵌套的,所以即使這個(gè)例子中所有的print語(yǔ)句擁有相同的空格縮進(jìn),仍然不是同一個(gè)代碼塊。

但是單有順序結(jié)構(gòu)和選擇結(jié)構(gòu)是不夠的,有時(shí)候某些邏輯執(zhí)行的次數(shù)本身就是不確定的或者說邏輯本身具有重復(fù)性,那么這時(shí)候就需要循環(huán)結(jié)構(gòu)了。

主站蜘蛛池模板: 武隆县| 夏津县| 乐至县| 南召县| 襄垣县| 堆龙德庆县| 黑山县| 奉新县| 蒙城县| 灵丘县| 万州区| 和平区| 海安县| 南澳县| 汝南县| 莎车县| 北川| 万载县| 许昌市| 乡城县| 阳原县| 吴忠市| 顺平县| 唐山市| 麦盖提县| 子长县| 亚东县| 射阳县| 门源| 甘肃省| 宁阳县| 革吉县| 新和县| 大悟县| 房产| 偃师市| 邵东县| 恩平市| 沙河市| 清新县| 轮台县|