python學習 迭代器和異常處理

2022-08-29 09:39:11 字數 4275 閱讀 4986

一、迭代器

python迭代器

iter() : 把可迭代物件 => 迭代器

next(): 呼叫迭代器中迭代物件

>所有可直接作用於 for 迴圈的資料型別都是迭代物件

>所有使用next() 方法的函式都是迭代器型別

>集合(set) 資料型別是迭代器物件但不是迭代器,不過可以通過 iter()

方法獲得乙個迭代器物件。

**:1.

a = ['

a','

b','c'

]a_iter =iter(a)

print

(next(a_iter))

print(next(a_iter))

執行結果:

e:\python_vs_code\directory[目錄]>d: e:/python_vs_code/directory[目錄]/demo0801/demo01.py

ab

結果可見: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類

**:

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: 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....