1. 程式人生 > >Python語法 之 結構與函式

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