1. 程式人生 > >笨辦法學Python(三十)

笨辦法學Python(三十)

word 解釋 codes cnblogs 函數 簡便 比較 說明 could

習題 30: Else 和 If

前一習題中你寫了一些 “if 語句(if-statements)”,並且試圖猜出它們是什麽,以及實現的是什麽功能。在你繼續學習之前,我給你解釋一下上一節的加分習題的答案。上一節的加分習題你做過了吧,有沒有?

  1. 你認為 if 對於它下一行的代碼做了什麽? If 語句為代碼創建了一個所謂的“分支”,就跟 RPG 遊戲中的情節分支一樣。if 語句告訴你的腳本:“如果這個布爾表達式為真,就運行接下來的代碼,否則就跳過這一段。”
  2. 為什麽 if 語句的下一行需要 4 個空格的縮進? 行尾的冒號的作用是告訴 Python 接下來你要創建一個新的代碼區段。這根你創建函數時的冒號是一個道理。
  3. 如果不縮進, 會發生什麽事情? 如果你沒有縮進,你應該會看到 Python 報錯。Python 的規則裏,只要一行以“冒號(colon)” : 結尾,它接下來的內容就應該有縮進。
  4. 把習題 27 中的其它布爾表達式放到 if語句 中會不會也可以運行呢?試一下。 可以。而且不管多復雜都可以,雖然寫復雜的東西通常是一種不好的編程風格。
  5. 如果把變量 people, cats, 和 dogs 的初始值改掉, 會發生什麽事情? 因為你比較的對象是數字,如果你把這些數字改掉的話,某些位置的 if 語句會被演繹為 True,而它下面的代碼區段將被運行。你可以試著修改這些數字,然後在頭腦裏假想一下那一段代碼會被運行。

把我的答案和你的答案比較一下,確認自己真正懂得代碼“區段”的含義。這點對於你下一節的練習很重要,因為你將會寫很多的 if 語句。

把這一段寫下來,並讓它運行起來:

技術分享
 1 people = 30
 2 cars = 40
 3 buses = 15
 4 
 5 
 6 if cars > people:
 7     print "We should take the cars."
 8 elif cars < people:
 9     print "We should not take the cars."
10 else:
11     print "We can‘t decide.
" 12 13 if buses > cars: 14 print "That‘s too many buses." 15 elif buses < cars: 16 print "Maybe we could take the buses." 17 else: 18 print "We still can‘t decide." 19 20 if people > buses: 21 print "Alright, let‘s just take the buses." 22 else: 23 print "Fine, let‘s stay home then."
View Code

你應該看到的結果

技術分享

加分習題

  1. 猜想一下 elifelse 的功能。
  2. cars, people, 和 buses 的數量改掉,然後追溯每一個 if 語句。看看最後會打印出什麽來。
  3. 試著寫一些復雜的布爾表達式,例如 cars > people and buses < cars
  4. 在每一行的上面寫註解,說明這一行的功用。

習題練習

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 a<b:
   sentence2
else:
   sentence3

執行過程如下:

先執行if語句中的判斷語句a>b,若該語句為True,執行語句1,若該語句為False則表示a和b的大小關系屬於另外兩種情況,需要再次進行判斷。執行elif中的判斷語句,若該語句為True則執行語句2,若該語句為False則表示屬於第三種情況,因為只有三種情況,只要不屬於前兩種,必然屬於第三種,因此為求簡便不需要任何判斷語句直接執行語句3。

還可以考慮n種情況,n種情況下你需要寫n-2個elif判斷語句,同樣的第n種情況不需要判斷語句只需要執行相應的語句即可,情況的順序是自定義的。

笨辦法學Python(三十)