刻意練習Python基礎 ——day 12:else 與 with 語句

17天 —— Python基礎刻意練習

Day 01——Task01:變量、運算符與數據類型
Day 02——Task02:條件與循環
Day 03——Task03:列表與元組(上)
Day 04——Task03:列表與元組(下)
Day 05——Task04:字符串與序列
Day 06——Task05:函數與Lambda表達式(上)
Day 07——Task05:函數與Lambda表達式(下)
Day 08——Task06:字典與集合
Day 09——Task07:文件與文件系統(上)
Day 10——Task07:文件與文件系統(下)
Day 11——Task08:異常處理
Day 12——Task09:else 與 with 語句
Day 13——Task10:類與對象(上)
Day 14——Task10:類與對象(下)
Day 15——Task11:魔法方法(上)
Day 16——Task11:魔法方法(下)
Day 17——Task12:模塊
    



else 與 with 語句



1. else 語句

  在Python中,else語句很與許多其他的語句進行聯繫。

 1.1. if…else 語句

  if...else是我們最常見的帶有else的語句,也相對簡單。

try:
    a = int(input("輸入一個數字:"))
    if a % 2 == 0:
            print("這是個複數")
    else:
            print("這是個單數")
except:
    print("輸入錯誤")



 1.2. while…else 語句

  while 中的語句和普通的沒有區別,else 中的語句會在循環正常執行完的情況下執行。

count = 0
while count < 5:
    print("%d is  less than 5" % count)
    count = count + 1
else:
    print("%d is not less than 5" % count)
    
# 0 is  less than 5
# 1 is  less than 5
# 2 is  less than 5
# 3 is  less than 5
# 4 is  less than 5
# 5 is not less than 5


   當while循環被break跳出時,else子句也不會執行。

count = 0
while count < 5:
    print("%d is  less than 5" % count)
    if count == 4:
    	break
    count = count + 1
else:
    print("%d is not less than 5" % count)

# 0 is  less than 5
# 1 is  less than 5
# 2 is  less than 5
# 3 is  less than 5
# 4 is  less than 5



 1.3. for … else 語句

  for ... else 語句與 while ... else 語句一樣,else 中的語句會在循環正常執行完的情況下執行。

for count in range(5):
    print("%d is  less than 5" % count)
    if count == 4:
    	break
    count = count + 1
else:
    print("%d is not less than 5" % count)

# 0 is  less than 5
# 1 is  less than 5
# 2 is  less than 5
# 3 is  less than 5
# 4 is  less than 5



 1.4. try … except … else 語句

  如果在 try 子句執行時沒有發生異常,Python將執行 else 語句後的語句(如果有 else 的話),然後控制流通過整個 try 語句。

try:
    正常的操作
   ......................
except:
    發生異常,執行這塊代碼
   ......................
else:
    如果沒有異常執行這塊代碼


   使用 except 而不帶任何異常類型,這不是一個很好的方式,我們不能通過該程序識別出具體的異常信息,因爲它捕獲所有的異常。

try:
    正常的操作
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   發生以上多個異常中的一個,執行這塊代碼
   ......................
else:
    如果沒有異常執行這塊代碼


   舉個例子:

try:
    fh = open("testfile", "w")
    fh.write("這是一個測試文件,用於測試異常!!")
except IOError:
    print("Error: 沒有找到文件或讀取文件失敗")
else:
    print("內容寫入文件成功")
    fh.close()

# 內容寫入文件成功






2. with 語句

  一些對象定義了標準的清理行爲,無論系統是否成功的使用了它,一旦不需要它了,那麼這個標準的清理行爲就會執行。

  關鍵詞 with 語句就可以保證諸如文件之類的對象在使用完之後一定會正確的執行它的清理方法。

try:
    f = open('myfile.txt', 'w')
    for line in f:
        print(line)
except OSError as error:
    print('出錯啦!%s' % str(error))
finally:
    f.close()

# 出錯啦!not readable


  這段代碼執行完畢後,就算在處理過程中出問題了,文件 f 總是會關閉。

try:
    with open('myfile.txt', 'w') as f:
        for line in f:
            print(line)
except OSError as error:
    print('出錯啦!%s' % str(error))

# 出錯啦!not readable    

參考資料

  • https://blog.csdn.net/LSGO_MYP/article/details/102825466
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章