一.循環結構
python中提供了for循環和while循環兩種操作,沒有do……while語句。
1.for循環:
與其他語言中for循環的常見的寫法如for (int i=0;i<10;i++)不同,python中的for循環更加類似於foreach結構:
##舉例:遍歷輸出一個單詞的所有字母
for letter in 'Python':
print('當前字母 :'+letter)
對比:
string str = "Python"; foreach(char c in str) { Console.WriteLine("當前字母:"+c); }
我們有時候會涉及到針對數組、列表或字典的索引或下標的操作或判斷,在Python中提供了for i in range(開始索引,結束索引)的方式進行操作:
##舉例:輸出一個List的前3個字母 List = ["C#","Java","Python","C","C++"] for i in range(0,2) ##注意索引下表是從0開始,這種寫法等價於for(int i=0;i<=2;i++) print(List[i])
在python3中,我們甚至可以使range以指定數字開始並指定不同的增量(甚至可以是負數,有時這也叫做'步長'):
如:for i in range(0, 10, 3) : print(i),這種寫法等價於for(int i=0;i<=10;i=i+3)
2.while循環:
基本語法如下:
while 判斷條件: 循環語句
當判斷條件為永真條件時,while為無限循環,比較常見的是用來處理實時請求或其他循環操作:
while 1==1: ##循環語句
使用Crtl+C可以直接跳出循環
3.使用break與continue進行循環控制:
var = 10 while var > 0: print ('當期變量值為 :', var) var = var -1 if var == 5: break ##break直接跳出整個循環 print ("Good bye!")
var = 10 while var > 0: var = var -1 if var == 5: # continue為跳過本次循環的剩余代碼,直接跳轉進入下一次循環 continue print ('當前變量值 :', var) print ("Good bye!")
二.選擇結構:
python中沒有提供switch語句進行選擇結構的操作,再讓我哭會……
python中選擇結構的常見語法是if ...... elif ...... else
i=1 if i==1 ##注意一哈,后面是用空格分隔而不是() print("進入if分支") elif i==2 print("進入elif分支") else print("else分支")
PS:在python中,0和null表示false,其余表示true。
三.函數:
1.函數的定義:Python中的函數定義語法如下:
def 函數名(參數列表): 函數體
函數以 def 關鍵詞開頭,后接函數名稱和圓括號 (),()中為這個函數的參數;以冒號起始,並且縮進
由於python弱化了變量以及變量類型的概念,因此函數體可以加retrun,也可以不加;不加return則類似於C語言中的void類型函數。
2.函數的調用與參數的傳遞:我們回到這段代碼:
## coding=utf-8 ##冒泡排序與HelloWorld
def BubbleSort(list):##定義一個函數 for i in range(len(list)): for j in range(i): if list[j] > list[j+1]: list[j],list[j+1] = list[j+1],list[j] return list if __name__ == "__main__":
list = [8,1,2,66,5,123] print("hello world") list = BubbleSort(list) ##調用函數BubbleSort並傳入參數list print(list)
在調用函數和傳參時,需要注意以下的幾個方面:
1.Python中提供了多個傳參的方式:
必需參數:須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣:
def sub(a,b): return a-b if __name__ == __"main"__: a=5,b=2 c=sub(a,b) print(c) ##輸出結果為3
關鍵字參數:傳參時按照參數名=值的方式傳參,允許函數調用時參數的順序與聲明時不一致,使用參數名進行匹配:
def sub(a,b): return a-b if __name__ == __"main"__: c=sub(b=2,a=5)##關鍵字參數,執行函數時會按照形參的參數名進行匹配,而非傳入參數的順序 print(c) ##輸出結果為3
默認參數:函數的入參定義了默認參數后,調用函數時可以不傳入參數,此時函數執行時取默認參數進行處理:
def sub(a=5,b=2) ##默認參數,當不傳入參數時,a取5,b取2進行運算 return a-b if __name__ == __"main"__" c=sub print(c)##輸出結果為3
不定長參數:當函數無法確定入參的實際個數時,可以采用不定長參數的方式進行傳參,不定長參數定義時需要加*,用於存放所有未命名的參數,若沒有指定就是一個空元組;不定長參數不一定要傳入:
def printinfo( arg1, *vartuple ): "打印任何傳入的參數" print ("輸出: ") print (arg1) for var in vartuple: print (var) return printinfo( 70, 60, 50 ) ##調用函數,傳入不定長的參數
PS:1.由於默認參數和不定長參數的存在,Python形式上不支持函數的重載,此外,python中函數參數變量是沒有類型的,當你調用傳值的時候才知道它到底是什么類型的變量。故對參數類型不同的函數根本無需考慮重載。
2.如果一個函數具有多個參數,調用時想指定其中的幾個,建議使用關鍵字參數進行傳參,降低報錯或異常的風險