原文鏈接:http://learnpythonthehardway.org/book/ex30.html
在上一節練習中,我們做了一些關於 if 語句的練習,然後讓你猜了它是什麼以及有什麼作用。在學習本節之前我會回答上一節研究訓練中的每一個問題。上一節的研究訓練你應該做了吧?
1、你認爲 if 對於它下一行的代碼做了什麼? If 語句爲代碼創建了一個所謂的“分支”,就跟 RPG 遊戲中的情節分支一樣。if 語句告訴你的腳本,“如果這個布爾表達式值爲真,那麼就繼續執行其下面的代碼,否則的話跳過執行。
2、爲什麼if下面的語句需要四個空格位置的縮進?一行以冒號結尾就是來告訴Python你要準備創建一個新的代碼”塊“,而縮進四個空格就是來告訴Python哪些代碼行是在這個塊中的。這就和這本書上半部分提到的當你創建一個函數時做的事情一樣。
3、如果不縮進會發生什麼?如果不縮進的話,你最有可能就是得到一個錯誤提示。Python 的規則裏,只要一行以“冒號(colon)” : 結尾,它接下來的內容就應該有縮進。
4、你能將Ex 27中的其它布爾表達式放到if語句中嗎?試一試。是的,你當然能,並且你想放多複雜的就放多複雜的,雖然放一些真的很複雜的東西一般來說不是一種不好的編程風格。
5、如何你改變 people ,cats ,dogs的初始化值會發生什麼事情?因爲你 比較的是數值的大小,如果你改變了這些值,某些位置的 if 語句會被演繹爲 True,而它下面的代碼區段將被運行。你可以試着修改這些數字,然後在頭腦裏假想一下那一段代碼會被運行。
把你的回答和我的回答進行比較,確保你真的理解了代碼”塊“的概念。理解代碼塊對你在下一節練習中非常重要,在那裏所有if語句都需要用到它。
輸入下面這些代碼並運行它。
people = 30
cars = 40
buses = 15
if cars > people:
print "We should take the cars."
elif cars < people:
print "We should not take the cars."
else:
print "We can't decide."
if buses > cars:
print "That's too many buses."
elif buses < cars:
print "Maybe we could take the buses."
else:
print "We still can't decide."
if people > buses:
print "Alright ,let's just take the buses."
else:
print "Fine ,let's stay home then."
輸出結果如下:
c:\>python ex30.py
We should take the cars.
Maybe we could take the buses.
Alright ,let's just take the buses.
研究訓練:
1、試着猜測下 elif 和 else 有什麼作用。2、改變 cars、people和buses的值,然後跟蹤每一個if語句看看將會打印什麼。
3、嘗試用一些更復雜的邏輯表達式,例如: cars > people and buses < cars。
4、對面上面的每一行代碼用英文描述它們都做了什麼。