重讀LPTHW-Lesson37

此次是複習課  複習python符號  整理以下python

1.邏輯運算符not、and、orshell

python中邏輯運算符包括not(布爾非)、and(布爾與)、or(布爾或)。注意如下幾點:函數

①運算規則:ui

例:spa

②運算優先級:not的優先級大於and和or的優先級,而and和or的優先級相等。邏輯運算符的優先級低於關係運算符,必須先計算關係運算符,而後再計算邏輯運算符3d

1 print not 1 and 0 
2 print not (1 and 0)
3 print 1 <= 2 and False or True
4 print 1<=2 or 1 > 1 + 2 

第一行  先計算not 1再計算and 0,輸出:Falsecode

第二行  先計算括號內的and,再計算not,輸出:True對象

第三行 先計算1 <= 2關係式,再計算and運算,最後計算or,輸出:Trueblog

第四行  先計算1 <= 2關係式,再計算1 > 1+2 關係式,最後計算or,輸出:True遞歸

2.with-as

with A() as B:

    block

這個語句中,A()是一個類,A()類中必須有兩個方法:__enter__()方法和__exit__()方法。

在執行with語句時,首先建立類A的一個臨時對象,而後調用對象的__enter__()方法,並將這個方法的返回值賦值給B。接下來,執行block語句塊(若__enter__()方法出現異常,會直接跳過,繼續執行block代碼塊)。在block代碼塊執行完畢後,調用對象的__exit__()方法。

實例:

class people(object):
    def __enter__(self):
        print "Enter people"
        return "Chinese"
    def __exit__(self,type,value,traceback):
        print "Exit people"
with people() as cn:
    print cn   

輸出:

Enter people
Chinese
Exit people

註解:①建立臨時對象people(),執行__enter__(),本例中是打印出"Enter people",而後將__enter__()的返回值即''Chinese"返回給變量'cn'

②執行語句塊,本例中是打印出變量cn的值,輸出"Chinese"

③調用__exit__()。本例中,調用__exit__()方法打印"Exit people"。

④本例中,__exit__()的三個參數type,value,traceback在異常處理中有很大做用,這也是with語句的強大之處,即它能夠處理異常。

3.assert      assert語句用來聲明/確保某個條件是True,而且在not True時引起一個錯誤。如你確信某個正在列表裏至少有一個元素,要驗證這一點,而且在列表中沒有元素的時候即爲not True的時候引起一個錯誤(會觸發'AssertionError'錯誤),這種狀況下應該運用assert語句。

4.break       

break語句用來停止循環,即便循環條件仍然爲真或序列沒有徹底遞歸,也中止執行循環語句,且對應的else語句將不執行。

# -*- coding:utf-8 -*-
while True:
    s = raw_input("Enter Something:")       #獲取用戶輸入
    if s == 'quit':     
        break                                        #用戶輸入'quit'時,停止循環結束遊戲
    print "Your input is %s,its length is %d." % (s,len(s))
print "Game Over"

輸出:

1 Enter Something:Python is number one
2 Your input is Python is number one,its length is 20.
3 Enter Something:I love programming
4 Your input is I love programming,its length is 18.
5 Enter Something:I will be a good programmer
6 Your input is I will be a good programmer,its length is 27.
7 Enter Something:quit 
8 Game Over

5.class  

定義類:

class person(object):
    pass

6.continue

continue語句用來跳過當前循環塊中的剩餘部分,繼續進行下一輪循環

while True:
    s = raw_input("Enter Something:")
    if len(s) < 3:
        continue        #當輸入長度小於3時,不執行任何處理
    print "Congratulations! Your enter is effcetive.Its length is %d." % len(s)

輸出:

Enter Something:a
Enter Something:12
Enter Something:123
Congratulations! Your enter is effcetive.Its length is 3.

7.def

定義函數:

def func(x):
    pass

8.del

del用來刪除列表、字典中的元素以及變量

 1 >>> list1 = ['a','b','c','d']
 2 >>> dict1 = {'a': 'A','b': 'B','c': 'C','d': 'D'}
 3 >>> del list1[1]
 4 >>> list1
 5 ['a', 'c', 'd']
 6 >>> del list1[0:2]
 7 >>> list1
 8 ['d']
 9 >>> del dict1['a']
10 >>> dict1
11 {'c': 'C', 'b': 'B', 'd': 'D'}
12 >>> del dict1['b']
13 >>> dict1
14 {'c': 'C', 'd': 'D'}
15 >>> del list1
16 >>> list1
17 
18 Traceback (most recent call last):
19   File "<pyshell#11>", line 1, in <module>
20     list1
21 NameError: name 'list1' is not defined
22 >>> del dict1
23 >>> dict1
24 
25 Traceback (most recent call last):
26   File "<pyshell#13>", line 1, in <module>
27     dict1
28 NameError: name 'dict1' is not defined
29 >>> x = 2
30 >>> x
31 2
32 >>> del x
33 >>> x
34 
35 Traceback (most recent call last):
36   File "<pyshell#17>", line 1, in <module>
37     x
38 NameError: name 'x' is not defined

9.elif、else

elif即else if,和else都是if語句塊的一部分:

if 0:
    pass
elif 1:
    pass
else:
    pass

10.except

try...except語句用來處理異常,其執行程序以下:

①try...except語句把一般的語句放在try塊中,從try語句塊開始執行,若無異常,則執行else語句(存在else的前提下)。

②若在執行try句塊中出現異常,則中斷try塊的執行並跳轉到相應的異常處理塊except塊中執行。其先從第一個exceptXX處開始匹配,找到對應的異常類型就進入對應exceptXX句塊處理;若是沒有找到則直接進入except塊處理。

③except句塊是可選項,若是沒有提供,調用默認的python處理器,處理方式則是終止應用程序並打印提示信息

try:
    s = raw_input("Enter Something:")
    print s
    print "Done"    
except EOFError:
    print "\nWhy did you do an EOFError on me?"      #當發生'EOFError'時執行此語句
except:
    print "\nsome error/exception occurred."      #當發生其餘類型異常時通通執行此語句

輸出:

11.exec

exec語句用來執行儲存在字符串或文件中的Python語句。

>>> exec "print 'Hello World!'"
Hello World!

12.in

for...in...語句;xx in [...]語句

13.lambda

lambda定義匿名函數。lambda定義函數僅一行語句。它只須要一個參數,後面緊跟單個表達式做爲函數體,並返回表達式的值。須要注意的是,lambda只能跟表達式。

>>> s = lambda x:x ** 3      #定義匿名函數,求三次方
>>> s(3)
27
>>> s(5)
125
>>> 

14.raise語句用來引起異常。須要知名錯誤/異常的名稱和伴隨異常觸發的異常對象,能夠引起的錯誤或異常應該分別是一個Error或Exception的類的導出類。

# -*- coding:utf-8 -*-
class ShortInputError(Exception):
    def __init__(self,length,atleast):
        Exception.__init__            初始化
        self.length = length
        self.atleast = atleast
try:
    s = raw_input("Enter something:")
    if len(s) < 3:
        raise ShortInputError(len(s),3)
except EOFError:
    print '\nWhy did you do an EOF on me?'
except ShortInputError,x:
    print 'ShortInputError:The input was of length %d,\
          was expecting at least %d' %(x.length,x.atleast)
else:
    print "No exception was raised."
    

輸出:

相關文章
相關標籤/搜索