一、迭代器
python迭代器
iter() : 把可迭代物件 => 迭代器
next(): 呼叫迭代器中迭代物件
>所有可直接作用於 for 迴圈的資料型別都是迭代物件
>所有使用next() 方法的函式都是迭代器型別
>集合(set) 資料型別是迭代器物件但不是迭代器,不過可以通過 iter()
方法獲得乙個迭代器物件。
**:1.
a = ['a','
b','c'
]a_iter =iter(a)
(next(a_iter))
print(next(a_iter))
執行結果:
e:\python_vs_code\directory[目錄]>d: e:/python_vs_code/directory[目錄]/demo0801/demo01.pyab
結果可見: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: e:/python_vs_code/directory[目錄]/demo0801/py_flie.py--陝西--
|--西安
|--咸陽
|--榆林
|--銅川
----------------------------------------
--河南--
|--鄭州
|--開封
|--安陽
|--商丘
----------------------------------------
--湖北--
|--武漢
|--黃岡
|--周口
|--禹州
----------------------------------------結束
結果可見:使用迴圈遍歷字典資訊
二、異常處理
1. try:
# 錯誤位置
except 錯誤型別:
# 捕獲錯誤,處理錯誤
else:
# 錯誤未發生,一切正常
finally:
# 無論錯誤有無發生,都執行
異常書寫:
try..except
try...except...finally...
try.....finally
try..except..else
注:當 try 塊中某個語句發生異常,直接執行處理異常塊,
當前 try 塊中的異常發生**之後的**不再執行。
2.多異常處理
異常捕獲 try...except....except....
**:
#獲得兩個數值
num1=input("
請輸入第乙個數")
num2=input("
請輸入第二個數")
#print(num1/num2)
#相除的兩個數的轉換
try:
a=int(num1)
b=int(num2)
a/bstr1="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/bstr1="a"
info =str1[3]
except
valueerror:
print("
請輸入數字")
except
zerodivisionerror:
print("
除數不能為零")
except: #
任何異常的捕獲
print("
異常發生")
finally
:
print("
程式執行結束
")
執行結果:
e:\python_vs_code\directory[目錄]>d: e:/python_vs_code/directory[目錄]/demo0801/py_except(multi).py請輸入第乙個數10
請輸入第二個數0
除數不能為零
程式執行結束
除數不能為零
程式執行結束
e:\python_vs_code\directory[目錄]>d: e:/python_vs_code/directory[目錄]/demo0801/py_except(multi).py
請輸入第乙個數a
請輸入第二個數2
請輸入數字
程式執行結束
請輸入數字
程式執行結束
結果可見: 兩個不同錯誤型別出現不同結果,多錯誤異常處理。
3.自定義異常
raise... 發生異常
自定義異常類
繼承exception類
**:
classageexcept(exception):
pass
age=1000 #
年齡值#
當年齡大於150異常
try:
if age>150:
raise ageexcept('
年齡。。。。
') #
認為發生異常 手動
#int('a')
except
ageexcept as ex :
(ex)
print("
異常發生 ")
#只是臨時自定義,並非永久。
int('
a')
執行結果:
e:\python_vs_code\directory[目錄]>d: 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
int('a
')valueerror: invalid literal
for int() with base 10: '
a'
結果可見:異常名可自定義,但僅是臨時修改
Python學習筆記 迭代器和迭代器協議
術語概念解釋 關於 for 迴圈 寫乙個迭代器 1 迭代器協議 迭代器協議是一種約定,即物件必須提供乙個 next 方法,執行該方法要麼返回迭代中的下一項,要麼丟擲乙個 stopiteration 異常,終止迭代。2 迭代器 iterator 迭代器是一種物件,一種可以被 next 函式呼叫並不斷返...
Python學習 迭代器
含義迭代的意思類似於迴圈,每一次重複的過程被稱為一次迭代的過程,而每一次迭代得到的結果會被用來作為下一次迭代的初始值 提供迭代方法的容器稱為迭代器,常用的迭代器 列表 元組 字串 字典。示例 1 字串 字串就是乙個容器,同時也是乙個迭代器,for 語句的作用就是觸發這個迭代器的迭代功能,每次從容器裡...
python迭代物件和迭代器
一.迭代物件 1.概念 迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable。2.可以直接作用於for迴圈的資料型別 1 集合類資料型別,如list,tuple,dict,set,str等 2 generator,包括生成器和帶yield的generator function....