前一習題中你寫了一些 「if 語句(if-statements)」,並且試圖猜出它們是什麼,以及實現的是什麼功能。在你繼續學習之前,我給你解釋一下上一節的加分習題的答案。上一節的加分習題你做過了吧,有沒有?
你認為 if
對於它下一行的**做了什麼? if 語句為**建立了乙個所謂的「分支」,就跟 rpg 遊戲中的情節分支一樣。if 語句告訴你的指令碼:「如果這個布林表示式為真,就執行接下來的**,否則就跳過這一段。」
為什麼 if
語句的下一行需要 4 個空格的縮排? 行尾的冒號的作用是告訴 python 接下來你要建立乙個新的**區段。這根你建立函式時的冒號是乙個道理。
如果不縮排, 會發生什麼事情? 如果你沒有縮排,你應該會看到 python 報錯。python 的規則裡,只要一行以「冒號(colon)」 :
結尾,它接下來的內容就應該有縮排。
把習題 27 中的其它布林表示式放到 if語句
中會不會也可以執行呢?試一下。 可以。而且不管多複雜都可以,雖然寫複雜的東西通常是一種不好的程式設計風格。
如果把變數 people
, cats
, 和 dogs
的初始值改掉, 會發生什麼事情? 因為你比較的物件是數字,如果你把這些數字改掉的話,某些位置的 if 語句會被演繹為 true
,而它下面的**區段將被執行。你可以試著修改這些數字,然後在頭腦裡假想一下那一段**會被執行。
把我的答案和你的答案比較一下,確認自己真正懂得**「區段」的含義。這點對於你下一節的練習很重要,因為你將會寫很多的 if 語句。
把這一段寫下來,並讓它執行起來:
猜想一下 elif
和 else
的功能。
將 cars
, people
, 和 buses
的數量改掉,然後追溯每乙個 if 語句。看看最後會列印出什麼來。
試著寫一些複雜的布林表示式,例如 cars > people and buses
。在每一行的上面寫註解,說明這一行的功用。
1.if和else
如果我們需要考慮的情況只有兩種,即滿足某一條件或者不滿足該條件,可以使用if else語句。
if a>b:
sentence1
else:
sentence2
執行過程如下:
先執行if語句中的判斷語句,滿足則執行語句1,不滿足則執行語句2。
2.if 語句的巢狀
以a,b兩個數比較大小來說,如果有三種情況需要區分,則需要進行巢狀,a>b;a小於b;a=b。
所以
if a>b:
sentence1
elif aelse:
sentence3
執行過程如下:
先執行if語句中的判斷語句a>b,若該語句為true,執行語句1,若該語句為false則表示a和b的大小關係屬於另外兩種情況,需要再次進行判斷。執行elif中的判斷語句,若該語句為true則執行語句2,若該語句為false則表示屬於第三種情況,因為只有三種情況,只要不屬於前兩種,必然屬於第三種,因此為求簡便不需要任何判斷語句直接執行語句3。
還可以考慮n種情況,n種情況下你需要寫n-2個elif判斷語句,同樣的第n種情況不需要判斷語句只需要執行相應的語句即可,情況的順序是自定義的。
笨辦法學Python
1.知識點 13節講的主要是module 模組 的概念,常用的語法是from xx import 依託於python強大的模組庫,使得呼叫十分輕鬆,功能十分強悍。argv叫做引數變數,可以理解為乙個包裹,在解包 unpack 的時候,將引數值賦給不同的變數名,其中第乙個變數是 隱藏 的,用來指代檔案...
笨辦法學Python(六)
雖然你已經在程式中寫過字串了,你還沒學過它們的用處。在這章習題中我們將使用複雜的字串來建立一系列的變數,從中你將學到它們的用途。首先我們解釋一下字串是什麼東西。字串通常是指你想要展示給別人的 或者是你想要從程式裡 匯出 的一小段字元。python 可以通過文字裡的雙引號 或者單引號 識別出字串來。這...
《笨辦法學python》習題38 40
mystuff 然後作者又給出了乙個錯誤的情況 class thing object def test hi print hia thing a.test hello 錯誤原因是test 只可以接受乙個引數,卻給了兩個。也就是 a.test hello 實際上是test a,hello 從這裡開始到...