1. 程式人生 > >Python學習手冊之控制結構(一)

Python學習手冊之控制結構(一)

布林比較
布林
Python 有許多種資料型別,其中一種型別叫布林,英文表示為 Boolean。它包含兩個值:TrueFalse
有兩種方式可以宣告資料型別是布林型。一種是直接宣告,另外一種是通過值比較產生,比如等於運算子==。

>>> boolean = True
>>> boolean
True
>>> 1 == 2
False
>>> 'me' == 'me'
True
小心不要混淆了賦值運算子 = 和等於比較運算子 ==。

比較
另外一個比較運算子是不等於運算子 !=,如果兩個值不相等返回True,否則返回 False。

>>> 1 != 1
False
>>> 1 != 2
True
>>> "day" != "today"
True

我們還可以通過運算子來比較一種數是大於或小於另外一個數。他們是 > 和 < 運算子。

>>> 10 > 11
False
>>> 7 < 10
True

在 Python 裡還有大於或等於 >= 和小於或等於 <= 運算子。
它們與大於或小於運算子相同,只不過當兩邊值相等時,它們返回 True

>>> 10 > 11
False
>>> 7 < 10 True
大於或小於運算子也可用於比較字串(單詞的順序就是它字的順序,每一個字在計算裡對應一個數字)。

if語句
if條件判斷
空白區在 Python 中十分重要。實際上,空白區在各行的開頭非常重要。這被稱作縮排(Indentation)在行的開頭留下空白區(使用空格和製表符)用以確定各行的縮排級別,而縮排級別又用於確定語句的分組。
這意味著相同條件的語句必須擁有相同的縮排,每一組這樣的語句被稱為塊(block)。
我們使用 if 語句實現條件判斷。根據 Python 的縮排規則,如果 if 語句的表示式計算結果為 True 那麼縮排的程式碼塊被執行了,否則縮排的程式碼塊不會被執行。

if name:
 sex
錯誤的縮排會導致程式錯誤或發生你不期望的結果。

下面是 if 宣告的例子:

if 10 < 20:
print("10 smaller than 20")

print("end")

表示式先判斷 10 是否小於 20, 其運算結果為真,接下來執行縮排的那部分程式碼輸出“10 smaller than 20”。然後執行不是 if 宣告的那部分,也就是未縮排的那部分輸出“end”。

>>>
10 smaller than 20
end
>>>
注意 if 聲明裡的比較運算表示式需要冒號來結束。
如果程式包含多行程式碼,你應該將其建立一個檔案並儲存程式碼。在命令列下使用 python file name 來執行它。

我們經常會遇到比較複雜的判斷條件,if 條件判斷可以巢狀在 if 條件判斷裡。
也就是說內部的 if 條件判斷是外部 if 條件判斷的一部分嗎,這樣我們就能滿足支援多種情況的條件判斷。

num = 10
if num > 6:
print("Bigger than 6")
if num <= 40:
print("Between 6 and 40")

執行結果:

>>>
Bigger than 6
Between 6 and 40
>>>

else語句
如果一個包含 else 語句的 if 條件判斷,當 if 條件的判斷值為 False 時,執行 else 裡的語句。
if 語句一樣,else 語句的程式碼也必須縮排。

x = 5
if x == 5:
print("Yes")
else:
print("No")

執行結果:

>>>
Yes
>>>
else 語句也必須像 if 語句一樣後面跟著冒號:。

我們可以巢狀 ifelse 語句來判斷哪個表示式是真的。

num = 4
if num == 5:
print("Number is 5")
else:
if num == 10:
print("Number is 10")
else:
if num == 4:
print("Number is 4")
else:
print("Number isn't 4,5 or 10")

執行結果:

>>>
Number is 4
>>>

elif語句
elif 語句是else if 的縮寫,主要用於多重判斷的語句。
if elif 多重判斷語句最後可以放置 else 語句,當前面if elif 多重判斷語句最終無法在所有的分支上得出結果為 True 情況下,程式執行else語句。

num = 4
if num == 5:
print("Number is 5")
elif num == 10:
print("Number is 10")
elif num == 4:
print("Number is 4")
else:
print("Number isn't 4,5 or 10")

執行結果:

>>>
Number is 4
>>>
if 語句執行有個特點,它是從上往下判斷,如果在某個判斷上是 True,則把該判斷對應的語句執行後就忽略掉剩下的 elifelse。
在其他語言裡 elif 語句有不同的語法變化,比如 else if,elseif或elsif。

布林邏輯判斷
布林邏輯判斷用於為依賴於多個條件的if語句創造更復雜的條件。
Python 布林邏輯運算子包含 andornot
and 運算子評估其運算子兩邊的結果,如果兩邊返回結果都是 True 則返回 True,否則返回 False

>>> 1 == 1 and 2 == 2
True
>>> 1 == 1 and 1 == 2
False
>>> 1 != 1 and 2 == 2
False
>>> 1 > 2 and 2 < 3
False
Python 使用上面三個單詞作為布林邏輯運算子,其它語言使用符號 &&、|| 和 !。

or 運算子
or 運算子評估其運算子兩邊的結果,如果有其中一邊運算的結果為 True 則返回 True,如果兩邊的結果都為 False 返回 False

>>> 1 == 1 or 2 == 2
True
>>> 1 == 1 or 1 == 2
True
>>> 1 != 1 or 2 == 2
True
>>> 1 > 2 or 3 < 1
False

Not 運算子
不像前面的兩個運算子,not 只評估其右邊的運算結果並返回相反的結果。not True 返回 Falsenot False 變成 True

>>> not 1 != 1
True
>>> not 1 < 7
False
我們可以在 if 判斷裡使用多個布林邏輯運算子來處理多個條件判斷。

運算優先順序

運算優先次序是程式裡比較重要的概念。
它是數學裡運算順序(比如:乘法優先於加法等)的體現和擴充套件。Python 的運算優先順序包括其他的一些運算子,如布林邏輯運算子。
下面程式碼顯示 -- 運算子優先順序高於 or 運算子。

>>> True or False == False
True
>>> (True or False) == False
False
>>> True or (False == False)
True
Python 的運算順序與普通數學的順序相同:首先是括號,然後是指數,接著是乘除法,最後加減法。

下面的表格表示Python裡有高到低的運算優先順序。

下面程式碼會輸出什麼?

x = 2
y = 4
if not 1 + 3 == y or x == 2 and 3 == 4:
print("Yes")
elif x < y:
print("No")

執行結果:

>>>
No
>>>

while 迴圈
我們看到 if 語句只執行一次當它的條件判斷為 True,當條件判斷為 False 不會執行其塊裡的程式碼。
如果我們需要重複執行一個動作那麼就需要 while 迴圈語句。當其條件判斷為 True 它重複執行其程式碼塊,而當條件判斷為 False 時它不再執行其程式碼塊,while 語句塊下一部分的程式碼將被執行。
下面程式碼例項表明 x 變數從1加到5後退出程式碼塊後輸出"Finished!"。

x = 1
while x <= 5:
print(x)
x += 1

print("Finished!")    

執行結果:

>>>
1
2
3
4
5
Finished!
>>>
程式碼塊在 while 語句裡重複執行,在計算機裡我們叫它迴圈。

在 while 迴圈裡,如果條件判斷永遠為 True 它將永遠不會停止,我們稱其為無限迴圈。

while True:
print("loop...")

上面程式碼永不停息地打印出"loop..."。

遇到這種情況,我們可以使用 Ctrl+C 快捷鍵來關閉這程式的執行。(針對命令列)    

break 語句
如果需要在程式碼塊裡跳出 while 迴圈,可以使用 break 語句。當在迴圈中遇到 break 語句,迴圈立即跳出 while 迴圈語句。

i = 0
while True:
print(i)
i += 1
if i >= 5:
print("Breaking")
break
print("Finished!")

執行結果:

>>>
0
1
2
3
4
Breaking
Finished!
>>>
注意:在迴圈外面使用 break 語句將會導致錯誤發生。

下面程式碼列印變數3次

i = 5
while True:
print(i)
i -= 1
if i <= 2:
break

執行結果:

>>>
5
4
3
>>>

continue 語句
迴圈裡面我們還可以使用 continue 語句。
不像 break 跳出整個迴圈並停止執行迴圈程式碼塊,continue 語句停止執行迴圈程式碼塊下面的部分並重新開始執行迴圈程式碼塊。

i = 0
while True:
i += 1
if i == 2:
print("Skipping 2")
continue
if i == 6:
print("Breaking")
break
print(i)

print("Finished")

執行結果:

>>>
1
Skipping 2
3
4
5
Breaking
Finished
>>>

continue 語句的作用是停止當前的迴圈並執行下一個迴圈。

在迴圈外面使用 continue 語句將會導致錯誤發生。

 

 

 

“小學課本上有一篇文章,叫小馬過河,小馬要過河,老馬說河水非常淺,松鼠說河水深不見底,小馬站在河前面進退兩難,面對著即將要淌過四年的河,我突然覺得,如果你不得不過河,那麼水深水淺,對你來說還重要麼”——路橋川 《一起同過窗》