日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python进阶之学习笔记_干货 | Python进阶系列之学习笔记(四)

發布時間:2023/12/4 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python进阶之学习笔记_干货 | Python进阶系列之学习笔记(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

Python條件判斷

Python循環語句

Python循環控制

迭代器與生成器

異常

一、Python 條件判斷

如果某些條件滿足,才能做某件事情;條件不滿足時,則不能做,這就是所謂的判斷。

不僅生活中有,在軟件開發中"判斷"功能也經常會用到

(1)if 語句發

介紹

if 翻譯成中文是 如果 的意思。if 后面寫判斷的條件。使用格式如下

使用格式

if 要判斷的條件:

條件成立時,要做的事情

如果 if 判斷的條件是正確的,那么就執行 if 下面縮進段內的代碼。否則不執行

# 舉個栗子age = 30 # 代表年齡30歲print("------if判斷開始------")if age >= 18: # 判斷條件print("我已經成年了") # 條件成立則執行print("------if判斷結束------")

age = 30 # 代表年齡30歲

print("------if判斷開始------")

if age >= 18: # 判斷條件

print("我已經成年了") # 條件成立則執行

print("------if判斷結束------")

實際操作:

執行過程:

(2)比較運算符:

剛剛在和大家講解 if 的使用方式時,不知道觀察仔細的各位有沒有發現 if 后面的條件判斷的寫法,除了這個大于號,還有什么寫法呢?

實際操作:

a = 3b = 3print(a == b) # 檢查兩個值print(a != b) # != ,a 是否不等于 bprint(a > b) # > ,a 是否大于 bprint(a < b) # < ,a 是否小于 bprint(a >= b) # >= ,a 是否大于等于 bprint(a <= b) # <= ,a 是否小于等于 b

b = 3

print(a == b) # 檢查兩個值

print(a != b) # != ,a 是否不等于 b

print(a > b) # > ,a 是否大于 b

print(a < b) # < ,a 是否小于 b

print(a >= b) # >= ,a 是否大于等于 b

print(a <= b) # <= ,a 是否小于等于 b

(3)邏輯運算符:

剛才上個知識點和大家講的是比較的運算符,那么咱們再來看看邏輯運算符

實際操作:

a = 10b = 20c = 30d = 10print(a < b and a > b) # and 當兩側的表達式都正確的時候,返回True,否則返回 False。print(a < b or b > a) # or 當兩側的表達式,只要有一個是正確時就返回True。print(not b > a) # b > a 結果是正確的。但是 not 會返回 False。# 如果結果是錯誤的,則返回 True。

b = 20

c = 30

d = 10

print(a < b and a > b) # and 當兩側的表達式都正確的時候,返回True,否則返回 False。

print(a < b or b > a) # or 當兩側的表達式,只要有一個是正確時就返回True。

print(not b > a) # b > a 結果是正確的。但是 not 會返回 False。

# 如果結果是錯誤的,則返回 True。

(4)if-else 語句

想一想:在使用 if 的時候,它只能做到滿足條件時要做的事情。那萬一需要在不滿足條件的時候,做某些事,該怎么辦呢?

答:使用 if-else

其使用格式如下:

if 條件:

滿足條件時要做的事情1

滿足條件時要做的事情2

滿足條件時要做的事情3

...(省略)...

else:

不滿足條件時要做的事情1

不滿足條件時要做的事情2

不滿足條件時要做的事情3

...(省略)...

# 舉個栗子chePiao = 1 # 用1代表有車票,0代表沒有車票if chePiao == 1: # 判斷條件print("還好買到車票了")print("終于可以回家陪伴父母了,珍惜~~~")else: # 條件不成立則執行 elseprint("沒有車票,不能上車")print("我要再想想其它的辦法")

chePiao = 1 # 用1代表有車票,0代表沒有車票

if chePiao == 1: # 判斷條件

print("還好買到車票了")

print("終于可以回家陪伴父母了,珍惜~~~")

else: # 條件不成立則執行 else

print("沒有車票,不能上車")

print("我要再想想其它的辦法")

實際操作:

執行過程:

(5)if-eilf-else 語句

if 能完成當條件成立時做的事情

if-else 能完成當條件成立時做事情 1 ,否則做事情 2

如果有這樣一種情況:當 條件一 滿足時做事情 1 ;當 條件一 不滿足、條件二 滿足時做事情2;當 條件二 不滿足、條件三 滿足時做事情3,那該怎么實現呢?

答:使用 eilf

其使用格式如下:

if 條件一成立:

執行事情1

elif 條件二成立:

執行事情2

elif 條件三:

執行事情3

# 舉個栗子score = 77 # 代表分數if score>=90 and score<=100:print('本次考試,等級為A')elif score>=80 and score<90:print('本次考試,等級為B')elif score>=70 and score<80:print('本次考試,等級為C')elif score>=60 and score<70:print('本次考試,等級為D')elif score>=0 and score<60:print('本次考試,等級為E')

score = 77 # 代表分數

if score>=90 and score<=100:

print('本次考試,等級為A')

elif score>=80 and score<90:

print('本次考試,等級為B')

elif score>=70 and score<80:

print('本次考試,等級為C')

elif score>=60 and score<70:

print('本次考試,等級為D')

elif score>=0 and score<60:

print('本次考試,等級為E')

實際操作:

執行過程:

二、Python 循環語句

在Python中 for 循環可以遍歷任何序列的項目,如一個列表或者一個字符串等。

(1)for 循環

for 循環,重點在于循環。可以理解為在某種情況下反復的做一些事情。比如咱們生活中的電子表,分別有時針分針和秒針,秒針從 0 開始,每一秒則遞增1,60秒時,分鐘遞增1,就這樣一直反復,這就可以理解為循環。

其使用格式如下:

for 臨時變量 in 列表或者字符串等可迭代對象:

循環滿足條件時執行的代碼

# 舉個栗子name = '天下第一帥'for x in name:print(x)

name = '天下第一帥'

for x in name:

print(x)

實際操作:

執行過程:

(2)while 循環

Python 編程中 while 語句也是循環語句種的一種,主要用于循環執行程序,即在某條件下,循環執行某段程序,以處理需要重復處理的相同任務。

其使用格式為:

while 判斷條件:

執行語句……

# 舉個栗子count = 1 # 表示為次數while (count < 9): print( 'count 運行次數:', count) count = count + 1print("while 循環條件不滿足 count 等于 9,退出 while 循環")

count = 1 # 表示為次數

while (count < 9):

print( 'count 運行次數:', count)

count = count + 1

print("while 循環條件不滿足 count 等于 9,退出 while 循環")

實際操作:

(3)while 死循環

有一種循環叫死循環,一經觸發,就運行個天荒地老、海枯石爛。

這是為什么捏?

因為 while 后面的條件一直成立。什么情況下會一直成立呢?

# 舉個栗子count = 0while True: # 判斷條件一直為真,那么就會一直進行循環print("count:",count)count += 1 # count = count + 1

count = 0

while True: # 判斷條件一直為真,那么就會一直進行循環

print("count:",count)

count += 1 # count = count + 1

實際操作:

三、Python 循環控制

(1)break 結束循環

break 翻譯成中文有:打破、折斷、弄壞等意思。在 Python 中 break 的作用是退出相關的所有的循環,結束所有循環。

# 舉個栗子count = 0while True:print('正在執行第'+str(count)+'循環')count += 1if count == 10:print('檢測到 count 等于 10 將執行 break 退出循環')breakprint('退出循環成功')

count = 0

while True:

print('正在執行第'+str(count)+'循環')

count += 1

if count == 10:

print('檢測到 count 等于 10 將執行 break 退出循環')

break

print('退出循環成功')

實際操作:

大家只需要記住 break 的作用是結束循環,就可以啦。

(2)continue 退出當前循環

Continue 退出是當前的循環,進入下一次循環.表示跳過當前這次循環,進行下一次循環

# 舉個栗子count = 0while count < 15:count += 1if count == 10:print('檢測到 count 等于 10 將執行 continue 跳過當前循環')continueprint('正在執行第'+str(count)+'循環')

count = 0

while count < 15:

count += 1

if count == 10:

print('檢測到 count 等于 10 將執行 continue 跳過當前循環')

continue

print('正在執行第'+str(count)+'循環')

實際操作:

continue 的作用是,跳出當前這一次循環。

四、迭代器與生成器

在了解 Python 的數據結構時,容器(container)、可迭代對象(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推導式(list,set,dict comprehension)眾多概念參雜在一起,難免讓初學者一頭霧水

容器比較容易理解,因為你就可以把它看作是一個盒子、一棟房子、一個柜子,里面可以塞任何東西。從技術角度來說,當它可以用來詢問某個元素是否包含在其中時,那么這個對象就可以認為是一個容器,比如 list,set,tuple 都是容器對象

(1)可迭代對象

可以被 for 循環的語句統稱為可迭代對象

如: list , set , dict , tuple,str

# 舉個栗子list1 = [1,2,3,4]dict1 = {"a":1,"b":2,"c":3}tuple1 = (1,2,3,4)for i in list1print(i)

list1 = [1,2,3,4]

dict1 = {"a":1,"b":2,"c":3}

tuple1 = (1,2,3,4)

for i in list1

print(i)

實際操作:

(2)不可迭代對象

無法使用 for 循環進行迭代的數據,稱為不可迭代對象.

# 舉個栗子age = 17for i in age:print(i)

age = 17

for i in age:

print(i)

實際操作:

(3)迭代器

定義

迭代器內含 iter() 方法?和?next() 方法.對于?字符串,列表,字典,元組?等這類容器對象,在使用?for?循環時,會對這些容器調用 iter() 方法 , iter() 方法是?python?內置的函數,iter()函數會返回一個定義了?next()?方法的迭代器對象.它在容器中逐漸訪問容器內的元素 , next() 也是python 的內置函數,在沒有后續函數時 , next() 函數會拋出一個 StopIteration 異常

使用

# 舉個栗子name = '我最帥,不接受反駁'name = iter(name)

name = '我最帥,不接受反駁'

name = iter(name)

實際操作:

(4)生成器

定義

生成器是創建迭代器的一個工具,寫起來就像一個正常的函數一樣,只是在需要有返回數據的時候使用?yield?語句,每次?next() 方法被調用時,生成器會返回它脫離的位置(返回它脫離的位置和所有的數據值)

也就是說,使用了 yield 關鍵字的函數不再是函數,而是生成器。

創建生成器的方法1

# 舉個栗子# a = [item*2 for item in range(5)] 這個是列表推導式# a = (item*2 for item in range(5)) 這個是生成器# 不同的地方在于 列表推導式使用中括號,生成器使用圓括號. 舉個栗子

# a = [item*2 for item in range(5)] 這個是列表推導式

# a = (item*2 for item in range(5)) 這個是生成器

# 不同的地方在于 列表推導式使用中括號,生成器使用圓括號.

實際操作:

創建 列表 a 和 生成器a 的區別僅在于最外層的 [ ] 和 ( ) ,列表a 是?個列表,? 生成器a,是?個?成器。我們可以直接打印出列表a的每?個元素,?對于?成器a,我們可以按照迭代器的使??法來使?,即可以通過next()函數、for循環、list()等?法使?。

創建生成器方法2

generator?常強?。如果推算的算法?較復雜,?類似列表?成式的 for 循環?法實現的時候,還可以?函數來實現。

我們仍然?上?節提到的斐波那契數列來舉例,回想我們在上?節?迭代器的實現?式:

def fibonacci(n):# 定義斐波那契數列的前2個值a = 0b = 1# 定義當前的位置current_index = 0print("------------1111-----------")while current_index < n:# 定義要返回的值result = a# ?成新的 a、b值a,b =b,a+b# 讓當前值+1current_index += 1print("-----------2222----------")yield resultprint("-----------3333------------")# ?成器,?成斐波那契數列fib = fibonacci(5)value = next(fib)print(value)value = next(fib)print(value)

# 定義斐波那契數列的前2個值

a = 0

b = 1

# 定義當前的位置

current_index = 0

print("------------1111-----------")

while current_index < n:

# 定義要返回的值

result = a

# ?成新的 a、b值

a,b =b,a+b

# 讓當前值+1

current_index += 1

print("-----------2222----------")

yield result

print("-----------3333------------")

# ?成器,?成斐波那契數列

fib = fibonacci(5)

value = next(fib)

print(value)

value = next(fib)

print(value)

操作結果:

使?了yield關鍵字的函數不再是函數,?是?成器。(使?了yield的函數就是?成器)

yield關鍵字有兩點作?:

1.保存當前運?狀態(斷點),然后暫停執?,即將?成器(函數)掛起

2.將yield關鍵字后?表達式的值作為返回值返回,此時可以理解為起到了return的作?

特點

生成器可以做到迭代器能做的所有事情,而且因為自動創建了?iter()?和?next()?方法,生成器會顯得比較簡潔一些,而且生成器相對更高效.使用生成器表達式取代列表解析可以同時節省內存.除了創建和保存程序狀態的自動方法,當生成器終止時,還會自動拋出 StopIteration 異常。

五、異常

(1)異常介紹

在介紹異常之前,咱們先看個例子:

# 舉個小栗子print(name) # 很簡單的輸出 name 變量數據

print(name) # 很簡單的輸出 name 變量數據

實際操作:

說明:

當我們在打印輸出一個未被定義的變量時,Python 解釋器就會為我們拋出一個 NameError 類型的錯誤,錯誤信息的描述是 : name 'name' is not defined ?顯示 名字 'name?' 沒有被定義

異常

還有很多類型的異常錯誤,當程序拋出異常錯誤之后,程序就無法繼續向下執行了.反而出現了一些錯誤的提示,這就是所謂的"異常"

(2)捕獲異常

那么咱們有什么方法,可以將這個異常進行捕獲嗎?

可以使用 try ... except ...

try ... except ...捕獲異常:

看個栗子:

# 先舉個栗子

try:print('-----test--1---')print(name)print('-----test--2---')except NameError:print('使用 try...except...成功捕獲到異常')

print('-----test--1---')

print(name)

print('-----test--2---')

except NameError:

print('使用 try...except...成功捕獲到異常')

實際操作:

說明:

此程序看不到任何錯誤提示(沒有標紅),因為用 except 捕獲到了 NameError 異常,并添加了處理的方法(except 縮進段內的語句就是處理方法)

小總結

except ...捕獲多個異常:

看個栗子:

try:print('-----test--1---')open('123.txt','r') # 以 r 只讀方式,打開文件 123.txtprint('-----test--2---')except NameError:print ('使用 try ... except ... 捕獲到 NameError 類型錯誤')

print('-----test--1---')

open('123.txt','r') # 以 r 只讀方式,打開文件 123.txt

print('-----test--2---')

except NameError:

print ('使用 try ... except ... 捕獲到 NameError 類型錯誤')

實際操作:

原因:

except 捕獲的錯誤類型是 NameError,而此時程序產生的異常為 FileNotFoundError,所以 except 沒有生效.

修改代碼:

try:print('-----test--1---')open('123.txt','r') # 以 r 只讀方式,打開文件 123.txtprint('-----test--2---')except FileNotFoundError:print ('使用 try ... except ... 捕獲到 FileNotFoundError 類型錯誤')

print('-----test--1---')

open('123.txt','r') # 以 r 只讀方式,打開文件 123.txt

print('-----test--2---')

except FileNotFoundError:

print ('使用 try ... except ... 捕獲到 FileNotFoundError 類型錯誤')

這樣 except 就可以成功捕獲到 FileNotFoundError 類型的錯誤信息了.

那么其實,實際開發過程中,捕獲多個異常的方式如下:

try:print('-----test--1---')open('123.txt','r') # 如果123.txt文件不存在,那么會產生 IOError 異常print('-----test--2---')print(num)# 如果num變量沒有定義,那么會產生 NameError 異常except (IOError,NameError):#如果想通過一次except捕獲到多個異常可以用一個元組的方式print('捕獲到 IOError 或者 NameError 錯誤')

print('-----test--1---')

open('123.txt','r') # 如果123.txt文件不存在,那么會產生 IOError 異常

print('-----test--2---')

print(num)# 如果num變量沒有定義,那么會產生 NameError 異常

except (IOError,NameError):

#如果想通過一次except捕獲到多個異常可以用一個元組的方式

print('捕獲到 IOError 或者 NameError 錯誤')

實際操作:

注意:

當捕獲多個異常時,可以把要捕獲的異常的名字,放到 except 后,并使用元組的方式進行存儲

獲取異常的信息描述

來通過圖片的方式,為大家進行詳解

捕獲所有異常

有些情況下,我們開發人員也不知道程序的運行會出現什么類型的錯誤,總不能每個類型錯誤都寫一次吧?

當然不會了,Python 在捕獲異常時,可以針對性寫異常錯誤類型,也可以不寫.

try: print(name) except: print('捕獲到程序出現異常')# 結果:捕獲到程序出現異常

print(name)

except:

print('捕獲到程序出現異常')

# 結果:捕獲到程序出現異常

except 后面什么都不寫的情況下,可以捕獲全部異常類型的錯誤.但是眼尖的同學能發現,雖然捕獲異常了,但是卻沒有了異常的信息描述.那么怎么辦呢?

try:print(name)except Exception as result:print('捕獲到程序出現異常:',result)

print(name)

except Exception as result:

print('捕獲到程序出現異常:',result)

實際操作:

這次 except 后面寫的是 Exception ,但是我沒有寫 NameError ,程序卻成功捕捉到了異常。因為 Exception 是常規錯誤的基類.所以一些常規的錯誤可以進行捕獲.

else 無異常則執行

咱們應該對 else 并不陌生,在 if 中,它的作用是當條件不滿足時執行的實行;同樣在try...except...中也是如此,即如果沒有捕獲到異常,那么就執行 else 中的事情

try: num = 100 print(num)except NameError as errorMsg: print('產生錯誤了:%s'%errorMsg) else: print('沒有捕獲到異常,真高興')

num = 100

print(num)

except NameError as errorMsg:

print('產生錯誤了:%s'%errorMsg)

else:

print('沒有捕獲到異常,真高興')

實際操作:

try ... finally ...

try...finally... 語句用來表達這樣的情況:

在程序中,如果一個段代碼必須要執行,即無論異常是否產生都要執行,那么此時就需要使用 finally。 比如文件關閉,釋放鎖,把數據庫連接返還給連接池等.

無論有沒有異常,最后都會執行 finally?下面的語句

# 舉個栗子try: num = 100 print(num)except NameError as errorMsg: print('產生錯誤了:%s'%errorMsg) else: print('沒有捕獲到異常,真開心')finally: # 可以和 else 一起使用. print('哎,對,就是開心~')

try:

num = 100

print(num)

except NameError as errorMsg:

print('產生錯誤了:%s'%errorMsg)

else:

print('沒有捕獲到異常,真開心')

finally: # 可以和 else 一起使用.

print('哎,對,就是開心~')

實際操作:

(3)異常的傳遞

異常的傳遞 函數嵌套,怎么理解呢,咱們向下看.

函數嵌套

如果一個函數發生異常,沒有進行捕獲,那么異常會傳遞給調用的函數.

# 舉個例子def func1():print("---正在執行 func1 ---開始")print(num)print("---正在執行 func1 ---結束")def func2():try:print("---正在執行 func2 ---開始")func1()print("---正在執行 func2 ---結束")except:print("---func2 捕捉到異常---")print("---無論func1 是否有異常,都執行這行代碼---")func2()

def func1():

print("---正在執行 func1 ---開始")

print(num)

print("---正在執行 func1 ---結束")

def func2():

try:

print("---正在執行 func2 ---開始")

func1()

print("---正在執行 func2 ---結束")

except:

print("---func2 捕捉到異常---")

print("---無論func1 是否有異常,都執行這行代碼---")

func2()

大家猜猜,這兩個函數的執行流程是什么?

實際操作:

這就是在函數嵌套中,如果出現異常,異常會逐層向上傳遞,異常出現后,異常下面的代碼不會執行,直到 except 捕獲異常為止.

(4)拋出自定義異常

你可以用 raise 語句來引發一個異常。異常/錯誤對象必須有一個名字(自定義的類名),且它們應是 Error 或 Exception 類的子類 。

下面是一個引發異常的例子:

class ShortInputException(Exception):'''自定義的異常類'''def __init__(self, length, atleast):#super().__init__()self.length = lengthself.atleast = atleastdef main():try:s = input('請輸入 --> ') # 根據輸入的字符串的長度進行判斷if len(s) < 3:# raise引發一個你定義的異常raise ShortInputException(len(s), 3)except ShortInputException as result:#x這個變量被綁定到了錯誤的實例print('ShortInputException: 輸入的長度是 %d,長度至少應是 %d'% (result.length, result.atleast))else:print('沒有異常發生.')main()

'''自定義的異常類'''

def __init__(self, length, atleast):

#super().__init__()

self.length = length

self.atleast = atleast

def main():

try:

s = input('請輸入 --> ') # 根據輸入的字符串的長度進行判斷

if len(s) < 3:

# raise引發一個你定義的異常

raise ShortInputException(len(s), 3)

except ShortInputException as result:#x這個變量被綁定到了錯誤的實例

print('ShortInputException: 輸入的長度是 %d,長度至少應是 %d'% (result.length, result.atleast))

else:

print('沒有異常發生.')

main()

運行結果:

注意:

以上程序中,關于代碼#super().__init__()的說明。

這一行代碼,可以調用也可以不調用,建議調用,因為 __init__ 方法往往是用來對創建完的對象進行初始化工作,如果在子類中重寫了父類的 __init__ 方法,即意味著父類中的很多初始化工作沒有做,這樣就不保證程序的穩定了,所以在以后的開發中,如果重寫了父類的__init__ 方法,最好是先調用父類的這個方法,然后再添加自己的功能

總結

以上是生活随笔為你收集整理的python进阶之学习笔记_干货 | Python进阶系列之学习笔记(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产麻豆午夜三级精品 | 天天干天天操天天拍 | 欧美三区在线观看 | 国产中文字幕一区 | 日本中文在线播放 | 亚洲在线视频免费观看 | 久久92 | 久久不卡 | 亚洲社区在线观看 | 操碰97 | 玖玖免费| 成人av免费在线看 | 91视频这里只有精品 | 精品无码久久久久久久 | 乱短篇艳辣500篇h文最新章节 | 亚洲欧美激情一区二区三区 | 69色 | 精品人妻码一区二区三区红楼视频 | 亚洲国产午夜 | 免费成人在线观看视频 | 久久久久久久久久一区二区三区 | 青青草偷拍视频 | 国产寡妇亲子伦一区二区三区四区 | 91性生活 | 精品伦一区二区三区 | 狠狠ri| 九色tv | 你懂的成人| 中文字幕日本一区 | 91在线网址 | 日韩在线一区二区三区四区 | 999av视频 | 国产高清视频一区 | 日日干日日插 | 日韩欧美高清在线视频 | 国产最新在线观看 | 欧美日韩视频免费观看 | ,午夜性刺激免费看视频 | 亚洲天天操| 夜色快播| 最新天堂av | 亚洲乱亚洲 | 99国产精品国产免费观看 | 亚洲第七页 | 亚洲天堂影院 | 午夜av免费在线观看 | 日本黄色片网址 | 一级大片视频 | 任我爽在线 | 另类在线视频 | 在线观看视频91 | 天天av天天爽 | 成人午夜看片 | 超色视频 | 久久不卡视频 | 黄色一级片免费看 | 亚洲成年人免费观看 | 欧美77777 | 999资源站| 一卡二卡精品 | 亚洲九区 | av网站大全在线观看 | 韩国精品在线 | 中文字幕乱码人妻无码久久95 | 韩国久久久 | 日韩成人福利视频 | 污视频网址在线观看 | 丰满人妻在公车被猛烈进入电影 | 性欧美大战久久久久久久 | 国产综合自拍 | 白又丰满大屁股bbbbb | 色人阁婷婷 | 亚洲欧洲视频 | 成人影视免费 | 国产成人久久精品77777综合 | 亚洲成人福利在线 | 亚洲精品码 | 亚洲欧美一级 | 日韩一区二区在线播放 | 香蕉婷婷 | 国产美女无遮挡永久免费观看 | 经典三级第一页 | 女人扒开腿让男人桶爽 | 成年人网站免费观看 | 国产一区伦理 | 欧美在线影院 | 日本视频h| 欧美一级免费视频 | 欧美黑人啪啪 | 欧美激情视频一区二区三区在线播放 | 亚av在线 | 自拍 亚洲 欧美 | 国产一区二区三区视频在线播放 | 国产无套内射又大又猛又粗又爽 | 亚洲一区二区观看 | 免费在线黄色网址 | wwwwxxx日本 | 日韩免费高清视频 | 亚洲欧美成人 |