習(xí)題 30: Else 和 If

前一習(xí)題中你寫(xiě)了一些 “if 語(yǔ)句(if-statements)”,并且試圖猜出它們是什么,以及實(shí)現(xiàn)的是什么功能。在你繼續(xù)學(xué)習(xí)之前,我給你解釋一下上一節(jié)的加分習(xí)題的答案。
上一節(jié)的加分習(xí)題你做過(guò)了吧,有沒(méi)有??
?你認(rèn)為 if 對(duì)于它下一行的代碼做了什么? If 語(yǔ)句為代碼創(chuàng)建了一個(gè)所謂的“分支”, 就跟 RPG 游戲中的情節(jié)分支一樣。if 語(yǔ)句告訴你的腳本:“如果這個(gè)布爾表達(dá)式為 真,就運(yùn)行接下來(lái)的代碼,否則就跳過(guò)這一段?!?
為什么 if 語(yǔ)句的下一行需要 4 個(gè)空格的縮進(jìn)? 行尾的冒號(hào)的作用是告訴 Python 接下來(lái)你要?jiǎng)?chuàng)建一個(gè)新的代碼區(qū)段。這根你創(chuàng)建函數(shù)時(shí)的冒號(hào)是一個(gè)道理。?
如果不縮進(jìn), 會(huì)發(fā)生什么事情? 如果你沒(méi)有縮進(jìn),你應(yīng)該會(huì)看到 Python 報(bào)錯(cuò)。 Python 的規(guī)則里,只要一行以“冒號(hào)(colon)” : 結(jié)尾,它接下來(lái)的內(nèi)容就應(yīng)該有縮進(jìn)。?
?把習(xí)題 27 中的其它布爾表達(dá)式放到 if 語(yǔ)句 中會(huì)不會(huì)也可以運(yùn)行呢?試一下。 可以。而且不管多復(fù)雜都可以,雖然寫(xiě)復(fù)雜的東西通常是一種不好的編程風(fēng)格。?
如果把變量 people, cats, 和 dogs 的初始值改掉, 會(huì)發(fā)生什么事情? 因?yàn)槟惚容^的對(duì)象是數(shù)字,如果你把這些數(shù)字改掉的話,某些位置的 if 語(yǔ)句會(huì)被演繹為 True,而它下面的代碼區(qū)段將被運(yùn)行。你可以試著修改這些數(shù)字,然后在頭腦里假想一下那一段代碼會(huì)被運(yùn)行。
把我的答案和你的答案比較一下,確認(rèn)自己真正懂得代碼“區(qū)段”的含義。這點(diǎn)對(duì)
于你下一節(jié)的練習(xí)很重要,因?yàn)槟銓?huì)寫(xiě)很多的 if 語(yǔ)句。
把這一段寫(xiě)下來(lái),并讓它運(yùn)行起來(lái):


你應(yīng)該看到的結(jié)果


加分習(xí)題
猜想一下 elif 和 else 的功能。
將 cars, people, 和 buses 的數(shù)量改掉,然后追溯每一個(gè) if 語(yǔ)句??纯醋詈髸?huì) 打印出什么來(lái)。?
試著寫(xiě)一些復(fù)雜的布爾表達(dá)式,例如 cars > people and buses < cars。?
在每一行的上面寫(xiě)注解,說(shuō)明這一行的功用。
