Python技術分享—循環控制

Python Java 今日頭條 技術 PHP 邏二妞 2019-06-30
此文來源於微博和今日頭條:邏二妞,轉載請註明出處,謝謝

循環控制

循環控制,就是讓程序循環運行某一段代碼直到滿足退出的條件,才退出循環。

Python技術分享—循環控制

Python用關鍵字for和while來進行循環控制,但是沒有其它語言的do...while語句(在Java和PHP中都有do while)。

while循環

while循環語句的控制結構圖如下所示:

Python技術分享—循環控制

while 判斷表達式:
內部代碼塊
接下來看一個具體的案例,求1-100之間的總和
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和為: %d" % (n,sum))
-----------------------------------------
通常在循環條件中,會設置退出條件,防止程序死循環。
while True:
s = input("what's you name:")
print("you name is %s"%s)
print("bye")
這個程序永遠也不會打印bye。

while的else從句:

while循環還可以增加一個else從句。當while循環正常執行完畢,會執行else語句。注意else與while平級的縮進方式!

number = 10
i = 0
# i = 11
while i < number:
print(i)
i += 1
else:
print("執行完畢!")

如果是被break等機制強制提前終止的循環,不會執行else語句。

number = 10
i = 0
while i < number:
print(i)
i += 1
if i == 7:
break
else:
print("執行完畢!")

for循環

雖然與while一樣都是循環的關鍵字,但for循環通常用來遍歷可迭代的對象,如一個列表或者一個字典。其一般格式如下:

for <variable> in <sequence>:
<statements>
for ... in ....:屬於固定套路
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)

循環的嵌套

if判斷可以嵌套,while和for當然也可以嵌套。但是建議大家不要嵌套3層以上,那樣的效率會很低。
# 這是一個判斷質數的程序
# 一個數,如果只有1和它本身兩個因數,這樣的數叫做質數(或素數)
for n in range(2, 100):
for x in range(2, n):
if n % x == 0:
print(n, '等於', x, '*', n//x)
break
else:
# 循環中沒有找到元素
print(n, ' 是質數')
# print(n,end = ', ')

break語句

想在循環過程中退出循環,怎麼辦?用break語句!
break只能用於循環體內。其效果是直接結束並退出當前循環,剩下的未循環的工作全部被忽略和取消。
Python的break只能退出一層循環,對於多層嵌套循環,不能全部退出。
for letter in 'Hello world': # 第一個實例
if letter == 'r':
break
print ('當前字母為 :', letter)
--------------------------------------------
var = 10 # 第二個實例
while var > 0:
print ('當前變量值為 :', var)
var -= 1
if var == 5:
break

continue語句

與break不同,continue語句用於跳過當前循環的剩餘部分代碼,直接開始下一輪循環。它不會退出和終止循環,只是提前結束當前輪次的循環。同樣的,continue語句只能用在循環內。
for letter in 'Hello world': # 第一個實例
if letter == 'o': # 字母為 o 時跳過輸出
continue
print ('當前字母 :', letter)
-------------------------------------------------------
var = 10 # 第二個實例
while var > 0:
var -= 1
if var == 5: # 變量為 5 時跳過輸出
continue
print ('當前變量值 :', var)

剛才前面跟大家說過,python中的break只能跳出當前層的循環,無法全部跳出。那如果有這麼需求怎麼辦?

設置flag
flag = False # 用於控制外層循環的標誌
for i in range(10):
if flag: # 當flag被內層循環設置為True的時候,跳出外層循環
break
for j in range(10):
if j==7:
flag = True
break
print(i,j)

(寫在最後,由於以後每天晚上九點半之後會更新Python基礎的知識點,記得來看哦!)

相關推薦

推薦中...