溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python循環(huán)語句

發(fā)布時間:2020-06-13 02:37:16 來源:網(wǎng)絡 閱讀:922 作者:LJ_baby 欄目:編程語言

python中的循環(huán)

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

循環(huán)語句的控制結構圖如下:
python循環(huán)語句

for in 循環(huán)

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

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

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

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

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

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

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

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

輸出結果:
True                                             # 元組為可迭代對象

如下兩種數(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)

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

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

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

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

>>> 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 語句

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

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

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

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

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

while循環(huán)

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

while <condition>:
    <statements>

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

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

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

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

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

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

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

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

輸出結果:
end...loop
5050

無限循環(huán)

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

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

輸出結果:
請輸入用戶名:Obama
welcome Obama
請輸入用戶名:Trump
welcome Trump
請輸入用戶名:
......
......

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

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

輸出結果:
請輸入用戶名:Obama
請輸入密碼:abc
請輸入用戶名:Trump
請輸入密碼:123
請輸入用戶名:baby
請輸入密碼:123456
Welcome baby

break和continue語句

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

continue語句

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

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

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

輸出結果:
sum=2500
break語句

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

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

輸出結果:
sum=1275

當count為51時,終止循環(huán),則sum計算的是 1...50 的總和

Tip:break跳出循環(huán),僅跳出最近的一個循環(huán),若循環(huán)只有一層,執(zhí)行break之后,循環(huán)就結束了;若循環(huán)有2層,則外側的循環(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)

輸出結果:
a......
1
2
3
b......
1
2
3
c......
1
2
3

如上所示,這里有兩層循環(huán),現(xiàn)在,當內(nèi)側循環(huán)至2時,使用break終止循環(huán)(見下面的示例),可以看到,內(nèi)側循環(huán)在輸出lst_2中的2之后終止,但是外側的循環(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
輸出結果:
a...
1
2
b...
1
2
c...
1
2

break還有一個注意點,就是當循環(huán)被break終止時,不會執(zhí)行循環(huán)后面的 else 語句

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

輸出結果:
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:      # 當循環(huán)值lst_1下標為1的元素時,終止循環(huán)
        break
else:
    print('end...')

輸出結果:                       # 沒有 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)

輸出結果:
sum=1275                  # else 中的 end loop... 并沒有輸出

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

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI