流程控制

流程控制

1 分支結構

Python中的流程控制語句有五個,分別是if條件判斷、if嵌套、while循環、for循環和跳轉語句。python

代碼塊:代碼塊中保存着一組代碼,同一個代碼塊中的代碼,要麼都執行要麼都不執行;代碼塊以縮進開始,直到代碼恢復到以前的縮進級別時結束。函數

1.1 if條件判斷

幾乎全部的語言都有if判斷語句,if語句根據判斷條件來選擇執行或者不執行後面的代碼塊。code

Python中的if判斷語句的格式以下:字符串

if 表達式:	
	語句1
	語句2
	...

if語句的核心是表達式,這個表達式是邏輯表達式,是判斷條件,表達式的值要麼是 "True" ,要麼是 "False" 。for循環

表達式後面的 ":" 不能省略,不然會報錯。class

語句一、語句二、...、是緊跟if的一個代碼塊,前面的縮進不能省,不然會報錯;縮進以四個空格爲標準,當代碼恢復到以前的縮進級別時,代碼塊結束。變量

當表達式的值爲 "True" 時,執行if後面的代碼塊;當表達式的值爲 "False" 時,跳過if後面的代碼塊,直接執行下一行代碼。循環

表達式能夠是布爾類型,也能夠是數字;當表達式爲數字時, "0" 爲假,其它數字均爲真。遍歷

當出現多個判斷條件時,表達式還可使用邏輯運算符來鏈接多個條件,若是但願全部條件同時知足,則須要使用 "and" ;若是但願只要有一個條件知足便可,則須要使用 "or" 。程序

表達式的值爲 "False" 或者 "0" 時,if後面的代碼塊不執行;當表達式爲空字符串、空列表、空元組、空字典時,表達式的值爲 "False" ;當表達式爲 "None" 時,表達式的值也爲 "False" 。

if條件判斷
x = True
if x:
    print("It's True!")  # 輸出It's True!

print('---------')
x = False
if x:
    print("It's True!")  # 沒有輸出

print('---------')
x = 18
if x:
    print('x is', x)  # 輸出x is 18

print('---------')
x = 0
if x:
    print('x is', x)  # 沒有輸出

print('---------')
x = 18
if x > 0:
    print('x =', x )  # 輸出x = 18

print('---------')
x = 'Hello'
if x:
    print('x is', x)  # 輸出x is Hello

print('---------')
x = ''
if x:
    print('x is', x)  # 沒有輸出

print('---------')
x = 1
if x*5 > 0 and x < 5:
    print('x =', x)  # 輸出x = 1

print('---------')
if None:
    print('Hello world')  # 沒有輸出
執行結果以下:
It's True!
---------
---------
x is 18
---------
---------
x = 18
---------
x is Hello
---------
---------
x = 1
---------
1.2 if嵌套

有時候事情的結果有兩種可能,那麼能夠用 "if...else" 來表示;當if表達式的值爲 "False" 時,執行else後的語句;注意,else不能單獨出現,必須跟if成對出現。

有時候事情的結果有多種可能,簡單的 "if...else" 並不能知足需求,這種狀況下就可使用 "if...elif" 。

elif和else同樣都是if的可選項,而且elif也不能單獨出現,必須跟在if的後面。

"if...elif" 格式只會執行第一個知足條件表達式的代碼塊,其它表達式中的代碼塊都會被忽視。

若是有elif,則else必須在最後,不能插在elif以前。

if...else的格式以下:

if 表達式:
	代碼塊
else:
	代碼塊

if...elif的格式以下:

if 表達式1:
	代碼塊
elif 表達式2:
	代碼塊
elif 表達式3:
	代碼塊
...
else:
	代碼塊
if嵌套
print('if...else')
x = 65

if x >= 60:
    print('及格!')
else:
    print('不及格!')

print('---------')
print('if...elif')
x = 89

if x >= 0 and x <= 100:
    if x >= 90 and x <= 100:
        print('極其優秀!')
    elif x >= 80:
        print('優秀!')
    elif x >= 70:
        print('良好!')
    elif x >= 60:
        print('及格!')
    else:
        print('不及格!')
執行結果以下:
if...else
及格!
---------
if...elif
優秀!

2 循環結構

Python中主要有兩種循環結構,while循環和for循環。

2.1 while循環

while循環是Python中最簡單的循環結構。

while循環的格式以下:

while 表達式:
	語句1
	語句2
	...

while後面的表達式和if中的表達式同樣,都是條件判斷;只有表達式的結果爲 "True" 時,纔會執行後面的循環體。

語句一、語句二、...、是緊跟while的一個代碼塊,叫作循環體;前面的縮進不能省,不然會報錯;縮進以四個空格爲標準,當代碼恢復到以前的縮進級別時,代碼塊結束。

while循環
print('while循環')
x = 1

while x <= 5:
    print('當前數字爲:%d' % x)
    x += 1  # x += 1不能省略,不然會產生無限循環或死循環

print('---------')
print('1-100的累加和')
x = 1
sum = 0

while x <= 100:
    sum += x
    x += 1

print('1-100的累加和爲:sum = %d' % sum)

print('---------')
print('打印小星星')
i = 1  # i表示行

while i <= 5:
    j = 1  # j表示列

    while j <= i:
        print('*', end='')  # end=''在末尾傳遞一個空字符串,這樣print函數不會在末尾添加一個換行符,而是添加一個空字符串
        j += 1

    print('')  # 表示換行

    i += 1
執行結果以下:
while循環
當前數字爲:1
當前數字爲:2
當前數字爲:3
當前數字爲:4
當前數字爲:5
---------
1-100的累加和
1-100的累加和爲:sum = 5050
---------
打印小星星
*
**
***
****
*****
2.2 for循環

在Python中,for循環能夠遍歷任何序列中的內容,如遍歷一個列表或一個字符串的全部元素;

也能夠用它來實現內容的重複輸出。

Python中的range函數能夠配合for使用;range函數有兩種使用方式,第一種是給定一個數字型參數,即range(num);第二種是給定兩個或三個數字型參數,即range(num1, num2, num3),前兩個數字分別表明開始和結束,最後一個數字表明步長,若是沒有則默認步長爲1。

for循環的格式以下:

for 臨時變量 in 列表或字符串等序列:
	語句1
	語句2
	...
for循環
print('for循環')
for x in (1, 2, 3, 4, 5):
    print(x, end=' ')

print('')  # 表示換行

print('---------')
print('重複輸出')
for x in (1, 2, 3):
    print('Hello Python!')

print('---------')
print('第一種range函數')
for x in range(5):
    print(x, end=' ')  # 輸出5個數,從0開始,即0 1 2 3 4

print('')  # 表示換行

print('---------')
print('第二種range函數')
for x in range(1, 10):
    print(x, end=' ')  # 輸出9個數,從1開始,不會輸出10,默認步長爲1,即1 2 3 4 5 6 7 8 9
執行結果以下:
for循環
1 2 3 4 5 
---------
重複輸出
Hello Python!
Hello Python!
Hello Python!
---------
第一種range函數
0 1 2 3 4 
---------
第二種range函數
1 2 3 4 5 6 7 8 9
2.3 跳轉語句

跳轉語句有break語句和continue語句。

break語句和continue語句只能用在循環中,不能單獨使用。

break語句和continue語句在嵌套循環中,只對最近的一層循環起做用。

break語句的做用是當即退出循環體,直接結束循環,包括while和for在內的全部循環控制語句;break用來結束當前代碼塊的最內層循環。

continue語句的做用是跳過當前的循環,緊接着執行下一次的循環,並不會退出循環體;continue用來結束當前代碼塊的本次循環。

跳轉語句--break
print('break語句')
i = 0

while i < 10:
    if i == 3:
        break

    print(i)

    i += 1

print('over!')

print('---------')
print('break結束最內層循環')
name = '流程控制語句'

for x in range(3):
    for y in name:
        if y == '控':
            break

        print(y, end=' ')

    print('')

    print('——第%d次循環——' % (x+1))
執行結果以下:
break語句
0
1
2
over!
---------
break結束最內層循環
流 程 
——第1次循環——
流 程 
——第2次循環——
流 程 
——第3次循環——
跳轉語句--continue
print('continue語句')
i = 0

while i <= 5:
    i += 1

    if i == 3:
        continue

    print(i)

print('over!')

print('---------')
print('continue結束本次循環')
name = '流程控制語句'

for x in name:
    if x == '控':
        continue

    print(x, end=' ')
執行結果以下:
continue語句
1
2
4
5
6
over!
---------
continue結束本次循環
流 程 制 語 句

3 知識拓展

3.1 pass語句

在Python中,pass語句是空語句,其做用是保持程序結構的完整性;pass語句不作任何操做,通常用做佔位語句。

由於流程控制以後的一行必須是有縮進的代碼塊,然而有時候可能並不須要執行什麼東西或者在編寫程序的時候尚未想好要如何編寫執行內容,這時候爲了保持程序結構的完整性,就須要用到pass語句來佔位。

pass語句
print('pass語句')
for i in 'Python':
    if i == 'h':
        pass  # 若是沒有pass會報錯,由於if語句不完整
    else:
        print(i, end=' ')
執行結果以下:
pass語句
P y t o n
3.2 循環語句中的else

在Python中,不僅if能夠和else組合,while和for也能夠和else組合出現。

和while組合的else後的代碼塊,會在while的條件表達式爲 "False" 時執行。

若是循環體中出現break語句,那麼退出循環的時候是不會執行else後的代碼塊的。

循環語句中的else
print('while...else')
x = 0

while x < 3:
    print('Hello Python!')
    x += 1
else:
    print('結束!')

print('---------')
print('while...break...else')
x = 0

while x <= 5:
    if x == 3:
        break
    print(x, end=' ')
    x += 1
else:
    print('結束!')  # 執行break語句退出循環時,else後的代碼塊並無執行

print('')  # 表示換行

print('---------')
print('for...else')
for x in range(3):
    print('當前數字爲 %d' % x)
else:
    print('當前數字爲 無')

print('---------')
print('for...break...else')
for x in range(5):
    if x == 3:
        break
    print(x, end=' ')
else:
    print('結束!')  # 執行break語句退出循環時,else後的代碼塊並無執行
執行結果以下:
while...else
Hello Python!
Hello Python!
Hello Python!
結束!
---------
while...break...else
0 1 2 
---------
for...else
當前數字爲 0
當前數字爲 1
當前數字爲 2
當前數字爲 無
---------
for...break...else
0 1 2
相關文章
相關標籤/搜索