python(2)-------The syntax of python

第一節、if測試

    if測試的一般形式:


if-elif-else語法舉例(Python中的多路分支):

[python] view plaincopy
  1. myname='Sophia'  
  2. if myname=='Jane':  
  3.     print "The is the first sister"  
  4. elif myname=='Ella':  
  5.     print'This is the second sister'  
  6. else:  
  7.     print 'This is Sophia'  
  8.               

python的代碼塊分隔符:

[python] view plaincopy
  1. x=1  
  2. if x:  
  3.     y=2  
  4.     if y:  
  5.         print'block2'  
  6.     print'block1'  
  7. print 'block0'  

以上面這段代碼爲例,包含三個模塊:第一個完全沒有縮進,第二個縮進四格,第三個縮進八格,這裏注意,python不在乎你怎麼縮進代碼。只在乎縮進是否一致!!!由此我們終於可以知道了,爲什麼if不需要C++中{}的約束,也不需要matlab中類似endif的約束了,因爲它需要的知識相同縮進。相對應的,如果你硬要在if外面加個大括號反倒有語法錯誤了!


  • 可以橫跨數行的語法:
有兩種語法可以使用後橫跨數行仍保持是一條語句:一個是語法括號對 ( ) [ ] { },另一種是上一章中講過的三個引號,相當於HTML中的<pre>,想起來了嗎?
  • 另外在做語句判定時,我們不得不講的是邏輯真值判定,這裏有三個操作:and  or  not

我們來看些例子:

[python] view plaincopy
  1. 1 and 2  
  2. 2  
  3. >>> 1 and 0  
  4. 0  
  5. >>> 0 and 1  
  6. 0  
  7. >>> 5 and 6  
  8. 6  
  9. >>> 6 and 5  
  10. 5  
  11. >>> 1<2 and 2>3  
  12. False  
  13. >>> 1<2 and 2<3  
  14. True  
  15. >>> 1<2 , 2>3  
  16. (TrueFalse)  
  17. >>>   
  18. >>>   
  19. >>> 2 or 33 or 21 or 00 or 0  #return left operand if true  
  20. (2310)  
  21. >>> 2 and 33 and 21 and 00 and 1 #return left operand if false  
  22. (3200)  


最後,總結一下本小結的知識要點,答案都在上面,請大家自行練習:









1.  while循環

while循環的一般格式:



for example:




  • break,continue,pass,else
break:跳出循環;
continue:跳到循環的首行;
pass:什麼都不做,空佔位(比如現在只佔個位子,以後再寫內容);
else:循環正常離開後執行;

舉個例子:

[python] view plaincopy
  1. def fun1():  
  2.     print 'run fun1'  
  3.   
  4. def fun2():  
  5.     print 'run fun2'  
  6.   
  7.   
  8. x='Sophia'  
  9. while x:  
  10.     if len(x)%2:  
  11.         fun1()  
  12.     else:  
  13.         fun2()  
  14.     x=x[1:]  
  15.     if len(x)<=1:  
  16.         break  
  17.   
  18. print'end'  
  19.       

運行結果:

[python] view plaincopy
  1. run fun2  
  2. run fun1  
  3. run fun2  
  4. run fun1  
  5. run fun2  
  6. end  


2.  for循環

for循環的一般語法:


example1:

[python] view plaincopy
  1. sum = 0  
  2. for x in [1,2,3,4]:  
  3.     sum = sum+x;  
  4. print sum  
  5.   
  6.   
  7. S=('Sophia','test','prog')  
  8. for x in S:  
  9.     print x,  

結果:

[python] view plaincopy
  1. >>>   
  2. 10  
  3. Sophia test prog  


example2:

[python] view plaincopy
  1. a = []  
  2. for i in range(10):  
  3.     a.append(i)  
  4. print a  
  5.   
  6. S='Sophia'  
  7. b=[]  
  8. i=0  
  9. while i<len(S):  
  10.     b.append(S[i])  
  11.     i+=1  
  12.   
  13. print b  
  14.   
  15. i=0  
  16. for j in range(1,len(S)-1):  
  17.     if b[j]<b[j-1]:  
  18.         print a[i]  
  19.     i+=1  
  20.               

結果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
['S', 'o', 'p', 'h', 'i', 'a']
2



  • 嵌套循環:

[python] view plaincopy
  1. s1=[1,2]  
  2. s2='scam'  
  3.   
  4. res=[]  
  5.   
  6. for x in s1:  
  7.     for x in s2:  
  8.         res.append(x)  
  9.   
  10.   
  11. print res  


結果:

['s', 'c', 'a', 'm', 's', 'c', 'a', 'm']


  • 現在我們引入python中文件打開的方式,首先說下暴力方式:
原文:t1.py
[python] view plaincopy
  1. x=1  
  2. if x:  
  3.     y=2  
  4.     if y:  
  5.         print'block2'  
  6.     print'block1'  
  7. print 'block0'  





for循環進行文件迭代:



這就是傳說中的文件迭代器,當然還存在其他的迭代器,比如字典有字典的迭代器,如上一節中所講:




  • 循環計數器:range

range常用在for循環中產生索引,也可以用在需要整數列表的任何地方:

>>> range(5),range(2,5),range(0,10,2)
([0, 1, 2, 3, 4], [2, 3, 4], [0, 2, 4, 6, 8])


  • 非完全遍歷:

[python] view plaincopy
  1. >>> S='Sophia'  
  2. >>> range(0,len(S),2)  
  3. [024]  
  4. >>> for i in range(0,len(S),2):  
  5.     print S[i]  
  6.   
  7.       
  8. S  
  9. p  
  10. i  


  • 並行遍歷:zip和map

zip創建配對後元組列表:



map與zip的唯一不同是,map用類似的方法把序列的元素配對後,爲較短的序列以None補齊。

另外還可以用zip構造字典:

[python] view plaincopy
  1. keys = ['a','b','c']  
  2. vals = [1,2,3]  
  3.   
  4.   
  5. Dic={}  
  6. for (k,v) in zip(keys,vals):  
  7.     Dic[k]=v  
  8.   
  9.       

結果:

>>>Dic

{'a': 1, 'c': 3, 'b': 2}


  • 偏移元素:enumerate

[python] view plaincopy
  1. S = 'Spam'  
  2. offset=0  
  3. for item in S:  
  4.     print item, 'appears at offset', offset  
  5.     offset+=1  
  6.       
  7. #same function can be realized by enumerate:  
  8.   
  9. E = enumerate(S)  
  10. print E.next()  
  11. print E.next()  
  12. print E.next()  
  13. print E.next()  


結果:



enumerate函數返回一個生成器對象,該對象有一個next方法,每次列表遍歷時,會返回一個(index,value)的元組。






第三節、文檔


之前有朋友一直在問,Python的語法即便非常清晰,其預置功能數量依然驚人:內置函數和異常、預定義對象屬性和方法、標準庫模塊等。我們之前只談到了皮毛而已,那麼困擾初學者的問題來了:怎樣找到這些內置工具呢?本節提供了一些python可用的文檔資源。



表1. python文檔資源


#註釋、dir函數和help函數之前我們已講過,不予贅述,這裏我們來看看其他幾項。



  • __doc__是自動附加在對象上的文檔,而且在運行時還可保存查看(類似#),從語法上來說,這類註釋是寫成字符串,放在模塊文件、函數積累語句的頂端,在任何可執行代碼前的。python會自動封裝這個字符串。
  • PyDoc:HTML報表:PyDoc提供的GUI接口可以將報表通過HTML網頁格式來呈現。
  • 標準手冊集:ActivePython27.chm(不同版本有不同名稱)






最後呢,還要給大家奉送上一些常見陷阱:

  • 不要忘記冒號
  • 從第一行開始寫程序
  • 空白行在交互模式提示符下非常significant
模塊文件中的空白行都會被忽略,但是交互模式下輸入空白行會結束語句。
  • 同一模塊內縮進一致
  • 不要嘗試在Python中寫C代碼,比如if (x==1):其實語法上沒關係,但是是多餘的,另外語句後不要打分號
  • 推薦使用簡單的for循環,而不是while和range。因爲for循環速度比較快,有時比等效的while快兩倍


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章