Python語法 之 結構與函式
綜述:計算機的流程控制主要通過三種結構來控制的:順序結構,選擇結構,迴圈結構。下面講述下python語言的這三種結構的語法模式。
選擇結構
並列if語句
所謂選擇結構就是一個或多個條件判斷,及其執行語句組成的程式碼模組。python的基本if語句的結構模式大致如下:
if <判斷條件1>:
<執行語句1>
elif <判斷條件2>:
<執行語句2>
(中間可以有多個這樣的條件判斷及執行語句)
else:
<執行語句3>
大致邏輯:如果條件1為真則執行語句1,現時語句2、3不執行,否則再判斷條件2,如果條件2為真則執行語句2同時語句3不再執行,否則執行語句3。
例子:
# -*- coding: utf-8 -*-
x = int(input("請輸入您的總分:"))
if x >= 90:
print('優')
elif x >= 80:
print('良')
elif x >= 70:
print('中')
elif x >= 60:
print('合格')
else:
print('不合格')
效果如下圖所示:
三元運算子
python中三元運算子基本形式:<表示式1>if<條件>else<表示式2>。其邏輯大致是如果條件為真則整個三元運算子的值是表示式1的值,如是條件為假則整個三元運算子的值是表示式2的值。三元運算子的另一種形式為:<條件>and<表示式1>or<表示式2>。
見如下例子:
# -*- coding: utf-8 -*-
x = int(input("請輸入您的總分:"))
y = '及格' if x >= 60 else '不及格'
print y
y = '合格' if x >= 60 else '不合格'
print y
結果如下圖:
if語句巢狀
if語句的巢狀的大致形式如下
if<條件A>:
<語句A>
if<條件a>
<語句a>
elif<條件b>
<語句b>
elif<條件c>
<語句c>
else
else:
<語句B>
大致邏輯:如果滿足條件A,則先執行語句A,再執行並列if語句a,b,c。如果不滿足語句B,則執行語句B。
例子:::
# -*- coding: utf-8 -*-
x = int(input("請輸入您的總分:"))
if x >= 60:
print('及格,屬於:')
if x >= 90:
print('優')
elif x >= 80:
print('良')
else:
print('中')
else:
print('不及格')
效果如下圖:
迴圈結構
for迴圈結構
與其他程式語言用迴圈控制變數來控制迴圈不同的是,python中for語句是通過迴圈遍歷某一序列物件(字串,列表,元組)來構建迴圈,迴圈的結束的條件是物件被遍歷完成。for語句的基本形式如下:
for <迴圈變數> in <迴圈物件>:
<語句1>
else:
<語句2>
注意其中的else語句是區別於其他程式語言的,只有在for迴圈正常退出時才執行。
for迴圈語句的邏輯是依次遍歷迴圈物件的每個變數賦值給迴圈變數,如果迴圈物件未結束,則迴圈執行語句1,如果迴圈物件結束,則進入else分支執行語句2,結束整個迴圈。
# -*- coding: utf-8 -*-
tuplesuc = (0,1,2,3,4,5,6,7,8,9)
for num in tuplesuc:
print("%d" % num)
else:
print("All Tuple")
效果如下:
while迴圈控制
while迴圈的結構如下:
while<條件>:
<語句1>
else:
<語句2>
while迴圈的邏輯是,如果條件為真則制迴圈執行語句1,直到條件為假時執行語句2後跳出整個while模組。
例子
# -*- coding: utf-8 -*-
count = 0
while count < 5:
print(count, "is less than 5")
count += 1
else:
print(count, "is not less than 5")
效果如下:
迴圈常用控制語句
break語句
用在for迴圈或while迴圈的迴圈體中,在其本身未達到迴圈結束條件時,提前結束迴圈語句。
例如:
# -*- coding: utf-8 -*-
count = 0
while count < 5:
print(count, "is less than 5")
if count == 3:
break
count += 1
else:
print(count, "is not less than 5")
效果如下圖:
這裡要注意到,如果是break結束迴圈體,則else的語句並不執行。
continue語句
continue語句用在while和for迴圈中,continue 語句用來告訴Python跳過當前迴圈的剩餘語句,然後繼續進行下一輪迴圈。 continue 語句跳出本次迴圈,而break跳出整個迴圈。
例子:
# -*- coding: utf-8 -*-
count = 0
while count < 5:
print(count, "is less than 5")
count += 1
if count == 3:
continue
print('!')
else:
print(count, "is not less than 5")
效果如下:
range函式
range( [start,] stop [, step])以start為起始值,stop為結束值,step為步長依次生成一個迭代值。需要注意的是,range() 函式返回的物件表現為它是一個列表,但事實上它並不是,range()函式並不是在呼叫時一次生成整個序列,而是遍歷一次才產生一個值,以減少記憶體的佔用,其本質是一個迭代器。step可以不設定,預設為1。start可以不設定,預設為0;
# -*- coding: utf-8 -*-
for i in range(5):
print i
else:
print 'over'
for i in range (6, 16, 2):
print i
else:
print 'over'
效果如下:
pass語句
pass是空語句,是為了保持程式結構的完整性。pass 不做任何事情,一般用做佔位語句。
函式
python中函式的定義與宣告是被視為一體的,這與C語言不同。python中函式的基本定義形式如下:
def 函式名(引數1,引數2,...,引數n):
函式體(語句塊)
return [返回值]
1、函式的命名規則要符合Python中識別符號的命名要求
2、def是定義函式的關鍵詞,不用指定函式返回值型別
3、函式後面是圓括號,可以有引數列表,也可以沒有引數
4、括號後面的冒號一定要有
5、緊接著def語句縮排四個空格的部分都是都是函式體
例子:
def add(x,y):
return x+y
print (add(3.2, 2.4), add(3,5))
效果如下:
python 在定義函式時並沒有明確引數型別,因為python中變數無型別,物件才有型別,所以引數x,y可以用來引用任何物件,後面的返回結果會根據物件的型別來返回。
只要在形參表末尾的那些引數可以有預設引數值,即你不可以在宣告函式形參的時候,先宣告有預設值的引數而後宣告沒有預設值的引數。這是因為賦給形參的值都是根據位置而賦值的
函式帶預設引數的定義形式:
/*有效*/
def add(x,y=1):
return x+y
/*無效*/
def add(x = 1, y):
return x+y