課時34:豐富的else語句以及簡潔的with語句

那是個好男孩發表於2018-08-21

目錄:
  一、豐富的else語句

  二、簡潔的with語句

  三、課時34課後習題及答案

 

***********************

一、豐富的else語句

***********************

1、要麼怎樣,要麼不怎樣

典型的if-else搭配:

if條件:
  條件為真執行
else:
  條件為假執行

 

2、幹完了能怎樣,幹不完就別想怎樣

else語句可以跟for和while迴圈語句配合使用,但是else語句塊只再迴圈完成後執行,也就是說,如果迴圈中間使用break語句跳出迴圈,那麼else裡邊的內容就不會執行了。舉個例子:

def showMaxFactor(num):
    count = num // 2
    while count > 1:
        if num % count == 0:
            print('%d最大的約數是%d' % (num, count))
            break
        count -= 1
    else:
        print('%d是素數!' % num)

num = int(input('請輸入一個數:'))
showMaxFactor(num)

這個小程式主要是要求使用者輸入的數的最大約數,如果是素數的話就順便提醒一下”這是一個素數“。注意要使用地板除法(count = num // 2)哦,否則結果會出錯。使用暴力的方法一個一個嘗試(num % count == 0),如果符合條件則列印最大的約數,並break,同時不會執行else語句塊的內容了。如果一直沒遇到合適的條件,則會執行else語句塊內容。

for語句的用法和while一樣,這裡就不重複舉例了。

 

3、沒有問題,那就幹吧

else語句還能跟剛剛學的異常處理進行搭配,實現跟與迴圈語句搭配差不多:只要try語句塊裡沒有出現任何異常,那麼就會執行else語句塊裡的內容了。舉個例子:

try:
      int("abc")
except ValueError as reason:
      print("出錯啦" + str(reason))
else:
      print("沒有任何異常")

 

***********************

二、簡潔的with語句

***********************

也許會覺得開啟檔案又要關閉檔案,還要關注異常處理有些煩人,所以Python提供了一個with語句,利用這個語句抽象除檔案操作中頻繁使用的try/except/finally相關的細節。對檔案操作使用with語句,將大大減少程式碼量,而且你再也不用擔心出現檔案開啟了忘記關閉的問題了(with會自動幫你關閉檔案)。舉個例子:

try:
      f = open("data.txt","x")
      for each_line in f:
            print(each_line)
except OSError as reason:
      print("出錯啦" + str(reason))
finally:
      f.close()

使用with語句,可以改成這樣:

try:
      with open("data.txt","x") as f:
            for each_line in f:
                  print(each_line)
except OSError as reason:
      print("出錯啦" + str(reason))

是不是很方便呢?有了with語句後,就再也不用擔心忘記關閉檔案了。

 

*******************************

三、課時34課後習題及答案

*******************************

 

相關文章