python循環(huán)語(yǔ)句

python中的循環(huán)

python中的 循環(huán)語(yǔ)句有兩種 for...in循環(huán) 和 while循環(huán)。循環(huán)控制語(yǔ)句,和其他的語(yǔ)言類似,也有break和continue。與其他語(yǔ)言不同的地方是for...in循環(huán)和while循環(huán),后面可以有else語(yǔ)句,具體下面會(huì)依次介紹~

創(chuàng)新互聯(lián)于2013年開(kāi)始,先為藤縣等服務(wù)建站,藤縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為藤縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

循環(huán)語(yǔ)句的控制結(jié)構(gòu)圖如下:
python循環(huán)語(yǔ)句

for in 循環(huán)

for in 循環(huán)的語(yǔ)法如下:

for <variable> in <sequence>:
    <statements>

其中<sequence>可以是一個(gè)字符串或者也可以是一個(gè)列表 等...

for i in 'hello':                  # 遍歷字符串
    print(i)
輸出結(jié)果:
h
e
l
l
o
######

for i in ['a', 'b', 'c', 'd']:      # 遍歷列表
    print(i)
輸出結(jié)果:
a
b
c
d
######

d = {'a': 1, 'b': 2, 'c': 3} 
for k, v in d.items():         # 遍歷字典,可同時(shí)迭代key和value
    print(k, v)
輸出結(jié)果:
a 1
b 2
c 3

這些可以直接被迭代的對(duì)象 統(tǒng)稱為可迭代對(duì)象:Iterable(collections模塊的Iterable類型),只要是Iterable對(duì)象就可以作用于for循環(huán)??梢允褂?isinstance() 判斷一個(gè)對(duì)象是否是 Iterable 對(duì)象,示例如下:

lst = (1, 2, 3)                                 # 元組類型
flag = isinstance(lst, Iterable)
print(flag)

輸出結(jié)果:
True                                             # 元組為可迭代對(duì)象

如下兩種數(shù)據(jù)類型可以總用于for循環(huán)中:
1)集合數(shù)據(jù)類型,如:list、tuple、dict、set、str...
2)生成器(generator)和帶yield的generator function

range()函數(shù)

range()函數(shù)為python內(nèi)置函數(shù),能夠生成數(shù)列。

hello_range = range(3)
print(isinstance(hello_range, Iterable))            
for i in hello_range:       # 循環(huán)遍歷 數(shù)列
    print(i)

輸出結(jié)果:
True                              #  range(3) 所生成的對(duì)象為 可迭代對(duì)象
0
1
2

使用range指定數(shù)列的區(qū)間:

>>> for i in range(2,5):
...     print(i)
...
2
3
4

除了指定區(qū)間,還可以指定步長(zhǎng):

>>> for i in range(2, 10, 3):
...     print(i)
...
2
5
8

range()函數(shù)除了可以作用于for循環(huán)中,還可以用于創(chuàng)建list或者tuple:

hello_list = list(range(10))           # 生成 list
print(hello_list)

hello_tuple = tuple(range(10))    # 生成 tuple
print(hello_tuple)

for...in 循環(huán)中的 else 語(yǔ)句

for...in 后面還可以有 else 語(yǔ)句,語(yǔ)法如下:

for <variable> in <sequence>:
    <statements>
else:
    <statements>

else 中的語(yǔ)句,會(huì)在 for 循環(huán)結(jié)束之后執(zhí)行:

>>> for i in range(5):
...     print(i)
... else:
...     print('end...')
...
0
1
2
3
4
end...

Tip:若 for 循環(huán)被 break 終止,則 else 中的語(yǔ)句不會(huì)被執(zhí)行,下面會(huì)介紹~

while循環(huán)

python中while循環(huán)的語(yǔ)法如下:

while <condition>:
    <statements>

條件滿足,則一直循環(huán),知道條件不滿足,退出循環(huán)~

示例如下,求1 ... 100 的總和:

sum = 0
n = 1
while n <= 100:
    sum += n
    n += 1
print(sum)                # 輸出結(jié)果:5050

while 循環(huán)中的 else 語(yǔ)句

類似于 for...in 循環(huán),while 循環(huán)后面也可以有 else 語(yǔ)句,語(yǔ)法如下:

while <condition>:
    <statements>
else:
    <statements>

當(dāng) while 后面的判斷語(yǔ)句返回值為 false,則循環(huán)終止,然后執(zhí)行 else 中的語(yǔ)句。同 for...in 循環(huán)一樣,若循環(huán)被 break 終止,則不會(huì)執(zhí)行 else 中的語(yǔ)句。

sum = 0
n = 1
while n <= 100:
    sum += n
    n += 1
else:
    print('end...loop')
print(sum)

輸出結(jié)果:
end...loop
5050

無(wú)限循環(huán)

可以使 while 后面的判斷語(yǔ)句一直返回為 True,這樣循環(huán)將不會(huì)被終止,一直執(zhí)行循環(huán)體中的語(yǔ)句:

while True:
    username = input('請(qǐng)輸入用戶名:')
    print('welcome %s' % username)

輸出結(jié)果:
請(qǐng)輸入用戶名:Obama
welcome Obama
請(qǐng)輸入用戶名:Trump
welcome Trump
請(qǐng)輸入用戶名:
......
......

例如 Linux 終端用戶的登錄,若用戶輸入的用戶名和密碼不正確,則會(huì)一直要求用戶重新輸入,直到輸入正確為止~
簡(jiǎn)單模擬下:

username = 'baby'
passwd = '123456'
flag = True
while flag:
    login_username = input('請(qǐng)輸入用戶名:')
    login_passwd = input('請(qǐng)輸入密碼:')
    if login_username == username and login_passwd == passwd:
        flag = False
else:
    print('Welcome %s' % username)

輸出結(jié)果:
請(qǐng)輸入用戶名:Obama
請(qǐng)輸入密碼:abc
請(qǐng)輸入用戶名:Trump
請(qǐng)輸入密碼:123
請(qǐng)輸入用戶名:baby
請(qǐng)輸入密碼:123456
Welcome baby

break和continue語(yǔ)句

在循環(huán)語(yǔ)句中還可以使用 break ,contiune 來(lái)控制循環(huán)流程。

continue語(yǔ)句

continue 用于略過(guò)本次循環(huán)中剩下的語(yǔ)句,直接進(jìn)入下一次循環(huán),示例如下:

# 計(jì)算1...100的奇數(shù)和

sum =0
count = 0
while count < 100:
    count += 1
    if count % 2 != 1:              # 若不是奇數(shù),直接進(jìn)入下一次循環(huán)
        continue
    sum += count
print('sum=%s' % sum)

輸出結(jié)果:
sum=2500
break語(yǔ)句

break 用于跳出最近的一個(gè)循環(huán),示例如下:

sum =0
count = 1
while count <= 100:
    if count == 51:
        break
    sum += count
    count += 1
print('sum=%s' % sum)

輸出結(jié)果:
sum=1275

當(dāng)count為51時(shí),終止循環(huán),則sum計(jì)算的是 1...50 的總和

Tip:break跳出循環(huán),僅跳出最近的一個(gè)循環(huán),若循環(huán)只有一層,執(zhí)行break之后,循環(huán)就結(jié)束了;若循環(huán)有2層,則外側(cè)的循環(huán)還會(huì)繼續(xù)

lst_1 = ['a......', 'b......', 'c......']
lst_2 = [1, 2, 3]
for i in lst_1:
    print(i)
    for j in lst_2:
        print(j)

輸出結(jié)果:
a......
1
2
3
b......
1
2
3
c......
1
2
3

如上所示,這里有兩層循環(huán),現(xiàn)在,當(dāng)內(nèi)側(cè)循環(huán)至2時(shí),使用break終止循環(huán)(見(jiàn)下面的示例),可以看到,內(nèi)側(cè)循環(huán)在輸出lst_2中的2之后終止,但是外側(cè)的循環(huán)還在繼續(xù):

lst_1 = ['a...', 'b...', 'c...']
lst_2 = [1, 2, 3]
for i in lst_1:
    print(i)
    for j in lst_2:
        print(j)
        if j == 2:
            break
輸出結(jié)果:
a...
1
2
b...
1
2
c...
1
2

break還有一個(gè)注意點(diǎn),就是當(dāng)循環(huán)被break終止時(shí),不會(huì)執(zhí)行循環(huán)后面的 else 語(yǔ)句

lst_1 = ['a...', 'b...', 'c...']
for i in lst_1:
    print(i)
else:
    print('end...')

輸出結(jié)果:
a...
b...
c...
end...        # 正常執(zhí)行else中的內(nèi)容

lst_1 = ['a...', 'b...', 'c...']
for i in lst_1:
    print(i)
    if lst_1.index(i) == 1:      # 當(dāng)循環(huán)值lst_1下標(biāo)為1的元素時(shí),終止循環(huán)
        break
else:
    print('end...')

輸出結(jié)果:                       # 沒(méi)有 c... 和 end... 輸出
a...
b...

while 循環(huán)也一樣,這里就直接使用上面的例子:

sum = 0
count = 1
while count <= 100:
    if count == 51:
        break
    sum += count
    count += 1
else:
    print('end loop...')
print('sum=%s' % sum)

輸出結(jié)果:
sum=1275                  # else 中的 end loop... 并沒(méi)有輸出

.................^_^

文章題目:python循環(huán)語(yǔ)句
鏈接URL:http://bm7419.com/article34/geispe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站制作App設(shè)計(jì)、ChatGPT、網(wǎng)站改版、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)