標籤:
在昨天學習Python之後,感覺它的的確確挺簡潔,也挺容易學習。在昨天的學習中我們瞭解到了Python中while迴圈語句以及if...else語句的使用,while語句的使用格式是這樣的:while express :,切記不要忘記冒號。if語句和while語句的使用類似。今天我們首先接著昨天的學習,瞭解Python中的for迴圈,break語句以及continue語句,之後再簡單接觸一下函數的使用。廢話不多說,我覺得對編程語句的學習最好是對照代碼來學習,所以我們先來看下面一段代碼:
1 for i in range(1,10,2): #for迴圈的使用格式2 print (i)3 if i == 7 :4 break5 else:6 print ("The for loop is over!") #這句話在for迴圈結束時列印,除非遇到break
在上面代碼的第一行中,我們使用中看到了for迴圈的使用。格式為:for .. in..:先解釋一下代碼第一行的作用:我們聲明了一個變數i,他的取值由rang()函數決定,上面表示i從1開始到10結束,其步長為2,但是不包括10。這就有點類似我們在JAVA中這樣使用for迴圈: 1 for(int i = 1;i < 10;i+=2) 。然後進入迴圈體,列印出每個i值,但是當i=7的時候,就跳出迴圈。這裡有一點需要注意的是,如果你從for或者while迴圈中終止,那麼任何對應的迴圈else塊將不會被執行,也就是說,當跳出迴圈後,第六行將不會被執行。結果如下:
如果我們將第3,4行使用#注釋掉,那麼結果如下:
除了要記住上面所說的遇到break語句所產生的不同結果之外,還應該記住,else部分是可選的,如果包含else語句,那麼它總是在迴圈結束執行一次。下面再來看看continue語句,Python中的continue語句和其他語言中(比如JAVA,C....)的continue語句作用是一樣的,所以很好理解。它的作用就是跳過當前迴圈塊中剩餘的語句,然後繼續執行下一輪迴圈。請看下面代碼:
1 while True :2 s = input(‘‘‘Enter something : ‘‘‘)3 if s == ‘q‘:4 break5 if len(s) < 3:6 print("string length too short.try again.")7 continue8 print ("The string length is :",len(s)) #len()用來求出s的長度9 print ("Done!")
在上面代碼中,提示使用者鍵入一些東西,如果鍵入字元‘q‘,那麼將會跳出迴圈,如果不是,那麼將判斷使用者鍵入的字串長度,如果長度小於3,使用者會得到提示,並結束本次迴圈,不會列印出字串的長度,如果長度大於3,那麼使用者會得到字串的長度。運行結果如下:
到此我們已經瞭解了Python中三種控制流程:if,while,for,以及與它們相關的break和continue語句。它們不僅在其他語言中需要熟練掌握,而且在Python中需要熟練掌握的。不需要死記硬背,和你之前熟悉的任何一門語言關聯記憶,記住不同之處就很好掌握了。
下面我們來開始瞭解Python中的函數。在Python中定義一個函數使用關鍵字def,後面跟一個函數名,然後一對圓括弧,括弧中可以有參數,然後以冒號結束。先上一段比較複雜的代碼,它的作用是將使用者輸入的十進位數轉為對應的二進位表示。如果不明白這個演算法的,可以參看我之前的一篇部落格《十進位轉二進位》。下面是Python代碼:
1 #定義函數 2 def tobinary(number): 3 n = number % 2 4 if number >= 2: 5 tobinary(number >> 1) 6 out = chr(ord(‘0‘)+n) 7 #chr()將ascii碼轉為對應的字元 8 #ord()將字元轉為對應的ascii碼 9 print ("%c"%(out),end=‘‘) #end控制列印間隔10 11 while True:12 s = input(‘‘‘Enter a number:(‘q‘ to quit)‘‘‘)13 if s == ‘q‘:14 break15 elif s.isdigit():16 tobinary(int(s))17 else:18 print ("your input is not correct!")19 print(end = ‘\n‘)20 21 print (‘Game over !‘)
在上面代碼第二行中我們使用關鍵字def定義了一個函數tobinary,它接收一個參數。函數的作用就是將這個參數位元列印輸出。關於chr()和ord()函數,以及print()中的end,請參看注釋。接下來進入while迴圈,我們判斷使用者輸入的是否為‘q‘,如果是,則退出程式。如果不是,我們再判斷使用者輸入的字串是否為數字(使用string中的isdigit()函數),如果是數字,那麼進入我們定義的函數,將其二進位表示列印。如果使用者輸入不是數字,則提示使用者輸入不合法。運行結果如下:
上面的代碼示範了如何定義並使用函數。還是比較簡單。下面說說函數參數。在Python中,我們不僅使參數擁有預設值,也可以指定關鍵參數。所謂預設參數值,就是我們在調用該函數的時候,可以不對其賦值,而讓它使用我們設定的預設值。請看下面代碼:
1 def say(message,times = 1):2 print(message * times)3 4 say(‘hello,‘)5 say(‘hello,‘,5)
上面的函數中,我們將times的預設值設定為1,在第四行調用函數的時候,我們沒有傳入times的值,所以Python會使用我們設定的預設值1,而在第五行,我們設定了times=5,執行結果如下:
然而對於關鍵參數,指的是:假如我們定義的函數有多個參數,而我們只想指定其中一部分,那麼我們可以通過命名來為這些參數賦值。這樣做的好處是:我們不必擔心參數的順序,以及假設其他參數都用預設值,我們可以只給我們想要的參數賦值。請看下面一段代碼:
1 def func(a,b=5,c=10):2 print (‘a is ‘,a,‘ and b is ‘,b,‘ and c is ‘,c)3 4 func(3,7)5 func(25,c=24)6 func(c=20,a=100)
上面的函數中,我們將b,c設定了預設值,a沒有設定。在代碼第4行,我們傳入了兩個參數,參數a將得到3,b將得到7,參數c使用預設值10;在代碼第5行中,根據實參的位置,變數a得到25,b使用預設值5,c得到24;第6行代碼中,我們使用關鍵參數來完全指定參數值,注意:儘管在函數定義中,a在c之前定義,我們仍然可以在a之前指定參數c的值。這就是關鍵參數指定。其運行結果如下:
最後再說一說文檔字串docstrings。它可以使協助我們的程式文檔更加簡單易懂,所以應該盡量使用它。請看下面代碼:
1 def printMax(x,y): 2 ‘‘‘Prints the maximum of two numbers. 3 4 The two values must be integers.‘‘‘ 5 x = int(x) 6 y = int(y) 7 8 if x > y : 9 print (x,‘is maximum‘)10 else:11 print (y,‘is maximum‘)12 13 printMax(10,20)14 print (printMax.__doc__)
在上面函數的第一個邏輯行的字串就是這個函數的文檔字串。我們運行結果,可以得到以下結果:
以上就是我今天所學的。歡迎各位博友多多指點。
Python筆記(二)