1、迭代器python
Python迭代器函數
簡介:能夠被 next() 函數調用並不斷返回下一個值的對象成爲迭代器spa
iter() : 把可迭代對象 => 迭代器code
next(): 調用迭代器中迭代對象對象
>全部可直接做用於 for 循環的數據類型都是迭代對象blog
>全部使用next() 方法的函數都是迭代器類型繼承
>集合(set) 數據類型是迭代器對象但不是迭代器,不過能夠經過 iter()ci
方法得到一個迭代器對象。input
代碼:it
1.
a = ['a','b','c'] a_iter =iter(a) print(next(a_iter)) print(next(a_iter))
運行結果:
E:\python_VS_code\directory[目錄]>D://py3.6//python.exe e:/python_VS_code/directory[目錄]/demo0801/demo01.py a b
結果可見:iter() 方法把列表轉換爲一個迭代器,next() 方法調用迭代器對象。
2.
>迭代器
>循環控制流程
>異常處理
代碼:
'''
城市信息展現 (省市級聯顯示) ''' dict_city = {'陝西':['西安','咸陽','榆林','銅川'], '河南':['鄭州','開封','安陽','商丘'], '湖北':['武漢','黃岡','周口','禹州']} dict_iter = iter(dict_city) dict_val = iter(dict_city.values()) while True: try: pro_name = next(dict_iter) print('--%s--'%pro_name) val = next(dict_val) val_name = iter(val) while True: try: print('|--%s'%next(val_name)) except StopIteration: print('--'*20) break except StopIteration: print('結束') break
運行結果:
E:\python_VS_code\directory[目錄]>D://py3.6//python.exe e:/python_VS_code/directory[目錄]/demo0801/py_flie.py --陝西-- |--西安 |--咸陽 |--榆林 |--銅川 ---------------------------------------- --河南-- |--鄭州 |--開封 |--安陽 |--商丘 ---------------------------------------- --湖北-- |--武漢 |--黃岡 |--周口 |--禹州 ---------------------------------------- 結束
結果可見:使用循環遍歷字典信息
2、異常處理
1.
try:
# 錯誤位置
except 錯誤類型:
# 捕獲錯誤,處理錯誤
else:
# 錯誤未發生,一切正常
finally:
# 不管錯誤有無發生,都執行
異常書寫:
#得到兩個數值 num1=input("請輸入第一個數") num2=input("請輸入第二個數") # print(num1/num2) #相除的兩個數的轉換 try: a=int(num1) b=int(num2) a/b str1="a" info =str1[3] except ValueError: print("請輸入數字") except ZeroDivisionError: print("除數不能爲零") except: #任何異常的捕獲 print("異常發生") finally: print("程序執行結束") #try 中捕獲異常 當任何異常均可處理的except處於第一個except 後續就不容許出現except try: a=int(num1) b=int(num2) a/b str1="a" info =str1[3] except ValueError: print("請輸入數字") except ZeroDivisionError: print("除數不能爲零") except: #任何異常的捕獲 print("異常發生") finally: print("程序執行結束")
運行結果:
E:\python_VS_code\directory[目錄]>D://py3.6//python.exe e:/python_VS_code/directory[目錄]/demo0801/py_except(multi).py 請輸入第一個數10 請輸入第二個數0 除數不能爲零 程序執行結束 除數不能爲零 程序執行結束 E:\python_VS_code\directory[目錄]>D://py3.6//python.exe e:/python_VS_code/directory[目錄]/demo0801/py_except(multi).py 請輸入第一個數a 請輸入第二個數2 請輸入數字 程序執行結束 請輸入數字 程序執行結束
結果可見: 兩個不一樣錯誤類型出現不一樣結果,多錯誤異常處理。
3.自定義異常
raise... 發生異常
自定義異常類
class AgeExcept(Exception): pass age=1000 #年齡值 # 當年齡大於150異常 try: if age>150: raise AgeExcept('年齡。。。。') #認爲發生異常 手動 # int('a') except AgeExcept as ex : print(ex) print("異常發生 ") # 只是臨時自定義,並不是永久。 int('a')
運行結果:
E:\python_VS_code\directory[目錄]>D://py3.6//python.exe e:/python_VS_code/directory[目錄]/demo0801/py_except(custom).py 年齡。。。。 異常發生 Traceback (most recent call last): File "e:/python_VS_code/directory[目錄]/demo0801/py_except(custom).py", line 28, in <module> int('a') ValueError: invalid literal for int() with base 10: 'a'
結果可見:異常名可自定義,但僅是臨時修改