重读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."
    

输出: