關(guān)系運(yùn)算符
if 語(yǔ)句
實(shí)際應(yīng)用中的程序,大多不是一撮而就的,而是根據(jù)條件不同存在很多分支。
最基本的條件分支結(jié)構(gòu)是if...else...語(yǔ)句即如果。。。否則。。。
在python當(dāng)中,if condition1:(注意最后的冒號(hào):)稱(chēng)為“語(yǔ)句頭”。冒號(hào):之后另起一行縮進(jìn)的是“語(yǔ)句體”,語(yǔ)句體的行數(shù)不限,但至少有一行,否則需要用pass填充(即什么也不做)。
縮進(jìn)是Python復(fù)合語(yǔ)句的關(guān)鍵,初學(xué)者經(jīng)常因縮進(jìn)不當(dāng)而導(dǎo)致報(bào)錯(cuò)。關(guān)于縮進(jìn)的習(xí)慣可以分為兩個(gè)派別:Tab黨,和Space黨,即用Tab鍵或空格鍵來(lái)控制縮進(jìn)。(我本人常年堅(jiān)持使用Tab)
if之后必須是一個(gè)布爾表達(dá)式(如 condition1),當(dāng)它為 True 時(shí),執(zhí)行其對(duì)應(yīng)的語(yǔ)句體(branch1),否則向下跳轉(zhuǎn)到后一個(gè)語(yǔ)句頭(elif)。如果所有的 if 都沒(méi)有被滿(mǎn)足,則執(zhí)行最后一個(gè) else對(duì)應(yīng)的語(yǔ)句體。
每個(gè)if分支所屬的程序體都需要縮進(jìn),否則會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤,這與C/C++/Java等使用大括號(hào) {} 的語(yǔ)言不同。
其實(shí)我個(gè)人認(rèn)為,使用大括號(hào)的代碼可讀性更高,而且不容易在傳播過(guò)程中失真。
下面寫(xiě)一個(gè)小程序判斷一個(gè)數(shù)是奇數(shù)還是偶數(shù)
循環(huán)
Python只支持兩種循環(huán):for 循環(huán)和 while 循環(huán)。
在語(yǔ)法結(jié)構(gòu)上和 if/else 有些接近,比如語(yǔ)句頭需要加冒號(hào)(:),語(yǔ)句體需要縮進(jìn)。
for 循環(huán)
在上一課中,我們介紹過(guò)對(duì)字符串的in和not in運(yùn)算符:in運(yùn)算符并非字符串的專(zhuān)利,很多數(shù)據(jù)類(lèi)型都具備這樣的性質(zhì),可以作為“迭代器”。
迭代器
組成 for 循環(huán)的一個(gè)關(guān)鍵部分就是迭代器。最常用的迭代器其實(shí)是列表(list)。字典(dictionary)也可以作為迭代器,迭代對(duì)象就是鍵(key)。
這些可以作為迭代器的數(shù)據(jù)容器,在之后的幾節(jié)會(huì)詳細(xì)介紹他們的屬性,下面先來(lái)看一個(gè)簡(jiǎn)單的小例子:
迭代器共有4個(gè)元素,分別是4個(gè)漢字。for循環(huán)迭代了四次,每次取一個(gè)字,并執(zhí)行print()函數(shù)。
range()函數(shù)
range()函數(shù)可以生成特定形式的數(shù)值迭代數(shù)列,經(jīng)常配合 for 循環(huán)使用。range()讀取三個(gè)參數(shù),分別對(duì)應(yīng)三種情況:
range(a):一個(gè)參數(shù),這個(gè)參數(shù)就是數(shù)列的上限(開(kāi)區(qū)間,不包含這個(gè)數(shù)本身),下限默認(rèn)為0。
range(a, b):兩個(gè)參數(shù)分別指定了上下限。下限(a)是閉區(qū)間,也包含在其中;而上限(b)則是開(kāi)區(qū)間,不參與計(jì)算。
range(a, b, c):三個(gè)參數(shù)。第三個(gè)參數(shù)叫步長(zhǎng),前兩個(gè)例子沒(méi)有第三個(gè)參數(shù),因此都是以默認(rèn)值 1 為步長(zhǎng)。本例中我們?nèi)藶橹付瞬介L(zhǎng)。輸出了 10 以?xún)?nèi)的偶數(shù)。值得再次提醒的是,這里的“10以?xún)?nèi)”不包括10。注意,如果 range(a, b) 的參數(shù) a>b,那么返回的將是一個(gè)空數(shù)組。
如果步長(zhǎng)為負(fù)數(shù),會(huì)返回什么樣的結(jié)果呢?
看下圖
while 循環(huán)
while 循環(huán)會(huì)持續(xù)反復(fù)執(zhí)行循環(huán)內(nèi)語(yǔ)句,直到condition == False。
每次執(zhí)行語(yǔ)句之后,都會(huì)重新檢查條件是否為真,如果為假則跳出循環(huán)。
下面出一個(gè)編程小練習(xí):
找出 100 以?xún)?nèi)三的倍數(shù),放入列表 numbers 中。
numbers = []
列表添加元素地方法是:numbers.append()
>>>> 編程區(qū) <<<<
>>>> 編程區(qū) <<<<
下篇文章我們公布答案。