python3從零學習-4.4、程序控制語句

程序控制語句就是控制程序執行流程的作用。這個好比走路,就像走到岔路口,我們需要決定往哪個路口繼續走,還是回去。這個程序控制語句就是起到決定程序運行路徑的。
 
  • 條件語句
if語句
if 判斷條件:
    statement
這裏的判斷條件爲真,才執行statement。這個判斷條件可以是一個表達式,可以是and/or/not實現的多重判斷條件。
a = 1
if a>0:
    print(‘if語句條件爲真,執行這裏’)    # a = 1就會執行這句.如果a = 0,那麼這句就不會執行。
 
# 判斷條件還可以是多重判斷
flag = False
if not flag and (a > 0):
    print(‘if語句,多重判斷條件爲真,執行這裏’)
 
else語句
與if語句搭配使用的else語句,如果if語句的表達式的結果爲假,那麼執行else語句後的代碼。
If 判斷條件:
    statement1
else:
    statement2
如果if判斷條件爲真,那麼執行statement1.
如果if判斷條件爲假,那麼執行statement2.
a = 0 
if a > 0:
    print(‘a>0,執行這裏')
else:
    print(‘a<=0,執行這裏')
 
避免“懸掛else”
python使用縮進而不是用大括號來標記代碼的邊界,不僅幫助強化了代碼的正確性,而且還暗中幫助程序員避免了語法上正確的代碼中存在潛在的問題。其中一個問題就是臭名昭著的“懸掛else”問題,一種語義錯覺。
下面是一段C語言的代碼例子,來說明“懸掛else”問題。
if (x == 0)
    if (y == 0)
        error();
else{
    z = x + y;
    f(&z);
}
 
# 此段代碼,本意是讓第一個if與else配對,但是實際else是跟第二個if配對了,因爲C語言的規則就是跟最近的if配對,所以這裏引起了問題。
# 正確的做法是把第二個if語句全部用大括號括起來。
# 因爲python是用縮進來標記代碼邊界,所以縮進就控制了代碼組的範圍,所以python能天然的避免這個“懸掛else”問題。
 
elif語句
elif是python的else if語句,它檢查多個表達式是否爲真,並在爲真時執行特定的代碼塊中的代碼。和else一樣,elif聲明也是可選的,然後不同的是,if語句後最多只能有一個else語句,但可以有任意數量的elif語句。
 
if 判斷條件1:
    statement1
elif 判斷條件2:
    statement2
          .
          .
elif 判斷條件N:
    statementN
else:
    statement(N+1)
 
因爲python沒有swtich/case語句,所以這個elif語句用來模擬它。
 
條件表達式(即“三元操作符”)
c/c++語法中有這樣的表達式:C?X:Y,這個被稱爲三元操作符。C是條件表達式;X是C爲True時的結果,Y是C爲False時的結果。
python在2.5版本中也加入了類似的語法:X if C else Y。  這個更pythonic化,更簡單明瞭。
X = 0
Y = 1
 
Z = X if X > Y else Y
print(Z)
 
# 輸出結果:1 
# 分析: 表達式X > Y 爲False,所以Z = Y ,Z的值爲1.
 
  • 循環語句
while語句
事實上它是一個條件循環語句,與if聲明相比,如果if後的條件爲真,就會執行一次相應的代碼塊。而while中的代碼塊會一直循環執行,直到循環條件不再爲真。
 
while 判斷條件:
    statement
 
count = 10
while count > 0:
    print(’the index is:’,count)
    count -= 1
 
# 代碼裏有自減語句,count減到0,while判斷條件就爲假,不再執行while後的代碼塊。
# 輸出結果:
‘’’
the index is: 9
the index is: 8
the index is: 7
the index is: 6
the index is: 5
the index is: 4
the index is: 3
the index is: 2
the index is: 1
‘''
 
如果判斷條件是True,那麼就是無限循環。
 
for語句
Python中提供了另一個循環語句就是for語句。它提供了python中最強大的循環結構。它可以遍歷序列成員,可以用在列表解析和生成器表達式中,它會自動地調用迭代器的next()方法。for語句就是c#語言中的foreach循環語句。
 
用於序列類型
for letter in 'Luly':
    print('current letter:', letter)
 
# 輸出結果:
# current letter: L
# current letter: u
# current letter: l
# current letter: y
 
遍歷列表
shools = ['三墩小學','前橫小學','錦繡小學','西湖小學']
 
for shool in shools:
    print('學校名稱:', shool)
 
# 輸出結果:
# 學校名稱: 三墩小學
# 學校名稱: 前橫小學
# 學校名稱: 錦繡小學
# 學校名稱: 西湖小學
 
# 用列表索引來迭代
shools = ['三墩小學','前橫小學','錦繡小學','西湖小學']
 
for shoolIndex in range(len(shools)):
    print('學校名稱:', shools[shoolIndex])
 
# 使用項和索引迭代,用enumerate()函數來實現
shools = ['三墩小學','前橫小學','錦繡小學','西湖小學']
 
for i,shool in enumerate(shools):
    print('學校序號:%d,學校名稱:%s' % (i, shool))
 
# 輸出結果:
# 學校序號:0,學校名稱:三墩小學
# 學校序號:1,學校名稱:前橫小學
# 學校序號:2,學校名稱:錦繡小學
# 學校序號:3,學校名稱:西湖小學
 
break語句
python中的break語句可以結束當前循環然後跳轉到下條語句。常用在當某個外部條件被觸發(一般通過if語句檢查),需要立即從循環中退出時break語句可以用在while和for循環中。
 
continue語句
不管是對python,C,Java,還是其他任務支持continue語句的結構化語言,一些初學者有這樣的一個誤解:continue語句“立即啓動循環的下一次迭代”。實際上,當遇到continue語句時,程序會終止當前循環,並忽略剩餘的語句,然後回到循環的頂端。在開始下一次迭代前,如果是條件循環,那麼會驗證條件表達式;如果是迭代循環,那麼會驗證是否有元素可以迭代。只有驗證成功的情況下,纔會開始下一次迭代。
 
pass語句
Pass語句只佔位,不做任何事情。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章