您好,登錄后才能下訂單哦!
python中的 循環語句有兩種 for...in循環 和 while循環。循環控制語句,和其他的語言類似,也有break和continue。與其他語言不同的地方是for...in循環和while循環,后面可以有else語句,具體下面會依次介紹~
循環語句的控制結構圖如下:
for in 循環的語法如下:
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
這些可以直接被迭代的對象 統稱為可迭代對象:Iterable(collections模塊的Iterable類型),只要是Iterable對象就可以作用于for循環。可以使用 isinstance() 判斷一個對象是否是 Iterable 對象,示例如下:
lst = (1, 2, 3) # 元組類型
flag = isinstance(lst, Iterable)
print(flag)
輸出結果:
True # 元組為可迭代對象
如下兩種數據類型可以總用于for循環中:
1)集合數據類型,如:list、tuple、dict、set、str...
2)生成器(generator)和帶yield的generator function
range()函數為python內置函數,能夠生成數列。
hello_range = range(3)
print(isinstance(hello_range, Iterable))
for i in hello_range: # 循環遍歷 數列
print(i)
輸出結果:
True # range(3) 所生成的對象為 可迭代對象
0
1
2
使用range指定數列的區間:
>>> for i in range(2,5):
... print(i)
...
2
3
4
除了指定區間,還可以指定步長:
>>> for i in range(2, 10, 3):
... print(i)
...
2
5
8
range()函數除了可以作用于for循環中,還可以用于創建list或者tuple:
hello_list = list(range(10)) # 生成 list
print(hello_list)
hello_tuple = tuple(range(10)) # 生成 tuple
print(hello_tuple)
for...in 后面還可以有 else 語句,語法如下:
for <variable> in <sequence>:
<statements>
else:
<statements>
else 中的語句,會在 for 循環結束之后執行:
>>> for i in range(5):
... print(i)
... else:
... print('end...')
...
0
1
2
3
4
end...
Tip:若 for 循環被 break 終止,則 else 中的語句不會被執行,下面會介紹~
python中while循環的語法如下:
while <condition>:
<statements>
條件滿足,則一直循環,知道條件不滿足,退出循環~
示例如下,求1 ... 100 的總和:
sum = 0
n = 1
while n <= 100:
sum += n
n += 1
print(sum) # 輸出結果:5050
類似于 for...in 循環,while 循環后面也可以有 else 語句,語法如下:
while <condition>:
<statements>
else:
<statements>
當 while 后面的判斷語句返回值為 false,則循環終止,然后執行 else 中的語句。同 for...in 循環一樣,若循環被 break 終止,則不會執行 else 中的語句。
sum = 0
n = 1
while n <= 100:
sum += n
n += 1
else:
print('end...loop')
print(sum)
輸出結果:
end...loop
5050
可以使 while 后面的判斷語句一直返回為 True,這樣循環將不會被終止,一直執行循環體中的語句:
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 ,contiune 來控制循環流程。
continue 用于略過本次循環中剩下的語句,直接進入下一次循環,示例如下:
# 計算1...100的奇數和
sum =0
count = 0
while count < 100:
count += 1
if count % 2 != 1: # 若不是奇數,直接進入下一次循環
continue
sum += count
print('sum=%s' % sum)
輸出結果:
sum=2500
break 用于跳出最近的一個循環,示例如下:
sum =0
count = 1
while count <= 100:
if count == 51:
break
sum += count
count += 1
print('sum=%s' % sum)
輸出結果:
sum=1275
當count為51時,終止循環,則sum計算的是 1...50 的總和
Tip:break跳出循環,僅跳出最近的一個循環,若循環只有一層,執行break之后,循環就結束了;若循環有2層,則外側的循環還會繼續
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
如上所示,這里有兩層循環,現在,當內側循環至2時,使用break終止循環(見下面的示例),可以看到,內側循環在輸出lst_2中的2之后終止,但是外側的循環還在繼續:
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還有一個注意點,就是當循環被break終止時,不會執行循環后面的 else 語句
lst_1 = ['a...', 'b...', 'c...']
for i in lst_1:
print(i)
else:
print('end...')
輸出結果:
a...
b...
c...
end... # 正常執行else中的內容
lst_1 = ['a...', 'b...', 'c...']
for i in lst_1:
print(i)
if lst_1.index(i) == 1: # 當循環值lst_1下標為1的元素時,終止循環
break
else:
print('end...')
輸出結果: # 沒有 c... 和 end... 輸出
a...
b...
while 循環也一樣,這里就直接使用上面的例子:
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... 并沒有輸出
.................^_^
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。