條件循環語句組成了Python程式碼的骨架
條件控制
我們都知道流程圖是有多個分支的,程式中也是如此,在Python中是用if語句來判斷程式該走哪個分支的。它的執行過程如下:

程式碼執行過程如下:

if
if語句的一般形式如下:
if condition_1:
statement_block_1
- 如果condition_1為True,執行statement_block_1。
condition_1是條件表達式,由各種運算符和數據類型組成,條件表達式的結果可以是True/False的布爾值,也可以是非布爾值。Python中的0、None、空列表、空字典等都會被認為是False,反之都會被認為是True。
else
else語句在條件為False時執行:
if condition_1:
statement_block_1
else:
statement_block_2
- 如果condition_1為True,執行statement_block_1。
- 如果condition_1為False,執行statement_block_2。
elif
if...else實現了「如果滿足條件,那麼xxx,否則xxx」,除此之外,還可以用elif實現多個連續判斷,分別執行不同的語句:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
- 如果condition_1為True,執行statement_block_1。
- 如果condition_1為False,再判斷,如果condition_2為True,執行statement_block_2。
- 否則,執行statement_block_3。
elif可以寫多個。這種寫法的執行順序是從上往下,只要滿足了某個if或elif的條件,就會在當前分支執行後跳出去,不再執行後面的判斷,如果每個if或elif的條件都是False,最後就會執行else。
if嵌套
假如想滿足if或elif的條件後,繼續做判斷,那麼就需要進行if語句嵌套,讓statement_block_1等程式碼塊也包含if語句:
if 表達式1:
語句
if 表達式2:
語句
elif 表達式3:
語句
else:
語句
elif 表達式4:
語句
else:
語句
示例:
num=int(input("輸入一個數字:"))
if num%2==0:
if num%3==0:
print("你輸入的數字可以整除 2 和 3")
else:
print("你輸入的數字可以整除 2,但不能整除 3")
else:
if num%3==0:
print("你輸入的數字可以整除 3,但不能整除 2")
else:
print ("你輸入的數字不能整除 2 和 3")
循環語句
條件語句是從上往下流水式單次執行,循環語句和條件語句的不同點在於,循環是可以回到起始點,反覆執行多次的,它的執行過程如下:

while
循環語句的一種形式是while語句:
while 判斷條件(condition):
執行語句(statements)……
它的執行流程圖如下:

示例:
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和為: %d" % (n,sum)) # 5050
for
循環語句的另一種形式是for語句:
for <variable> in <sequence>:
<statements>
else:
<statements>
它的執行流程圖如下:

示例:
languages = ["C", "C++", "Perl", "Python"]
for x in languages:
print(x)
break
break用來跳出整個循環,它的執行流程圖如下:

示例:
for letter in 'Runoob': # 第一個實例
if letter == 'b':
break
print ('當前字母為 :', letter)
var = 10 # 第二個實例
while var > 0:
print ('當期變數值為 :', var)
var = var -1
if var == 5:
break
print ("Good bye!")
continue
break用來跳出整個循環,continue則是用來跳過當前循環,回到起點,繼續下一次循環。它的執行流程圖如下:

示例:
for letter in 'Runoob': # 第一個實例
if letter == 'o': # 字母為 o 時跳過輸出
continue
print ('當前字母 :', letter)
var = 10 # 第二個實例
while var > 0:
var = var -1
if var == 5: # 變數為 5 時跳過輸出
continue
print ('當前變數值 :', var)
print ("Good bye!")
break和continue在while循環和for循環中的程式碼執行過程如下:


循環else
循環後面可以加else語句,while...else,for...else。咋看一下else好像並沒有什麼用,因為while循環條件為False或for循環結束後,一定會執行接下來的語句。但是如果循環中出現了break,當循環從break跳出來後,是不會執行else語句的。例如:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, '等於', x, '*', n//x)
break
else:
# 循環中沒有找到元素
print(n, ' 是質數')
range()函數可以生成數字序列。
無限循環
通過設置while循環條件始終為True,可以讓循環一直進行下去,例如:
while True:
pass
pass是佔位語句,不執行任何操作。
無限循環是很有用的,比如定時任務,每隔5分鐘收1次郵件:
import time
while True:
receive_email()
time.sleep(300)
還有比如客戶端和伺服器保持連接的心跳機制等。
小結
本文介紹了條件控制和循環語句,也就是寫Python常用的if、while、for語句,同時也講解了附帶語句elif、else、break、continue、pass的使用。同時也包括了if嵌套、循環else、無限循環的知識點。這一部分的知識非常重要,是程式碼的骨架,除了看文章,學程式碼最好的方式是實際敲程式碼。我們建了一個「Python互助討論群」,每周日會有演算法刷題打卡活動(照著答案敲一遍也ok),公眾號後台回復「加群」即可加入,有興趣的同學可以一起來相互學習交流呀。
參考資料:
//www.runoob.com/python3/python3-conditional-statements.html

