重读LPTHW-Lesson37
这次是复习课 复习python符号 整理如下
1.逻辑运算符not、and、or
python中逻辑运算符包括not(布尔非)、and(布尔与)、or(布尔或)。注意以下几点:
①运算规则:
例:
②运算优先级:not的优先级大于and和or的优先级,而and和or的优先级相等。逻辑运算符的优先级低于关系运算符,必须先计算关系运算符,然后再计算逻辑运算符
print not 1 and 0
print not (1 and 0)
print 1 <= 2 and False or True
print 1<=2 or 1 > 1 + 2
第一行 先计算not 1再计算and 0,输出:False
第二行 先计算括号内的and,再计算not,输出:True
第三行 先计算1 <= 2关系式,再计算and运算,最后计算or,输出:True
第四行 先计算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"
输出:
Enter Something:Python is number one
Your input is Python is number one,its length is 20.
Enter Something:I love programming
Your input is I love programming,its length is 18.
Enter Something:I will be a good programmer
Your input is I will be a good programmer,its length is 27.
Enter Something:quit
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用来删除列表、字典中的元素以及变量
>>> list1 = ['a','b','c','d']
>>> dict1 = {'a': 'A','b': 'B','c': 'C','d': 'D'}
>>> del list1[1]
>>> list1
['a', 'c', 'd']
>>> del list1[0:2]
>>> list1
['d']
>>> del dict1['a']
>>> dict1
{'c': 'C', 'b': 'B', 'd': 'D'}
>>> del dict1['b']
>>> dict1
{'c': 'C', 'd': 'D'}
>>> del list1
>>> list1 Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
list1
NameError: name 'list1' is not defined
>>> del dict1
>>> dict1 Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
dict1
NameError: name 'dict1' is not defined
>>> x = 2
>>> x
2
>>> del x
>>> x Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
x
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."
输出:

重读LPTHW-Lesson37的更多相关文章
- LPTHW 结束了
基本上在学习了LPTHW的 类 继承 和 合成以后基本就结束. 后面几章都是根据web.py进行网页编程,以及自动化测试的.目前来看不太感兴趣. 稍后我可能找个实际项目进行锻炼下,比如 Crossin ...
- LPTHW 笨办法学python 40章 类
今天读了LPTHW的第40章以后豁然开朗,原来一直愚钝,不太理解类的定义和使用,还有就是不太理解关于self的定义. class MyStuff(object): def __init__(self) ...
- 重读 code complete 说说代码质量
重读code complete 说说代码质量 2014年的第一篇文章本来计划写些过去一年的总结和新年展望,但是因为还有一些事情要过一阵才能完成,所以姑且不谈这个,说说最近重读code complete ...
- 不忘初心 --- 重读<<The C Programming Language>>
这篇文章应该发布在好几年前,2011年计算机界大师Dennis Ritchie仙逝,那时对大师的映象还停留在大一刚学编程时:Unix的合作开发者,C语言的发明人.通过网上的纪念文章<<Un ...
- 重读COM技术内幕(inside com)有感
重读COM技术内幕(inside com)有感 面向对象设计哲学在复杂领域并不能很好地解决问题.参考(http://www.richardlord.net/blog/what-is-an-entity ...
- 重读redis设计与实现
重读了一遍redis设计与实现,这次收获也不错,把之前还有些疑惑的点:redis跳跃表的原理.redis持久化的方法.redis复制.redis sentinel.redis集群等,都重新熟悉了一遍, ...
- (名词 形容词 动词 副词)重读&(冠词 介词 连词 代词 辅助词(Be))弱读
二,一些发音规则 除了上面的练习之外,这里还有几个注意点需要我们有足够的认识,那就是英语有重读.弱读.连读.爆破.语感(节奏和断句)等(其实当你跟读并背诵新概念之后,这一切都是神马,你不知觉地也会发现 ...
- 重读《学习JavaScript数据结构与算法-第三版》-第2章 ECMAScript与TypeScript概述
定场诗 八月中秋白露,路上行人凄凉: 小桥流水桂花香,日夜千思万想. 心中不得宁静,清早览罢文章, 十年寒苦在书房,方显才高志广. 前言 洛伊安妮·格罗纳女士所著的<学习JavaScript数据 ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第4章 栈
定场诗 金山竹影几千秋,云索高飞水自流: 万里长江飘玉带,一轮银月滚金球. 远自湖北三千里,近到江南十六州: 美景一时观不透,天缘有分画中游. 前言 本章是重读<学习JavaScript数据结构 ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第5章 队列
定场诗 马瘦毛长蹄子肥,儿子偷爹不算贼,瞎大爷娶个瞎大奶奶,老两口过了多半辈,谁也没看见谁! 前言 本章为重读<学习JavaScript数据结构与算法-第三版>的系列文章,主要讲述队列数据 ...
随机推荐
- 用PHP向MySql中写入图片
我们经常遇到的问题是如何将图片文件放到Mysql数据库当中,这样可以避免没有认证的用户找到我们的图片资源! 1.看看数据库里的表结构怎么写 CREATE TABLE Images ( PicN ...
- POJ 1020 Anniversary Cake(DFS)
Anniversary Cake Time Limit: 1000MSMemory Limit: 10000KB64bit IO Format: %I64d & %I64u Submit St ...
- webservice 技术改进
Webservice 技术改进 1.不同系统不同语言之间的交互 基于http协议进行传输,使用REST服务实现WS 2.不同系统相同语言之间的交互 使用RPC(romate process call) ...
- 【iOS开发】collectionView 瀑布流实现
一.效果展示 二.思路分析 1> 布局的基本流程 当设置好collectionView的布局方式之后(UICollectionViewFlowLayout),当系统开始布局的时候,会调用 pre ...
- linux下mysql连接jar包的位置在哪里?
linux下连接mysql数据库,肯定也会用到驱动jar包. 该jar包应该被置于jdk安装路径下jre文件夹lib目录的ext文件夹下.例如我的JDK安装路径为/usr/java/jdk1.6.0_ ...
- j2ee概览
J2EE诞生的背景是什么?Java 2平台企业版,也就是J2EE,定义了开发多层企业应用程序的标准.它的诞生并不是偶然的,它是在各种条件积累成熟之下的产物.原因之一:java语言的巨大成功.1994年 ...
- 开源欣赏wordpress之intall.php
引导式安装 $weblog_title = isset( $_POST['weblog_title'] ) ? trim( wp_unslash( $_POST['weblog_title'] ) ) ...
- Google API v3 设置Icon问题处理
1.查看API实现 //虽然比较符合API实现的思想但这个没法; //会产生Uncaught TypeError: undefined is not a function //google API n ...
- JavaScript 输入验证器工具
前注:在数据添加的时候很多地方都会涉及到数据的合法性验证,所以有必要提炼成为一个工具.今天偶然间点错网页,弹出一个游戏界面,本来是想看怎么实现的背景音乐的加载的,结果看到一个注册页面的验证JS,所以这 ...
- Unique Binary Search Trees 解答
Question Given n, how many structurally unique BST's (binary search trees) that store values 1...n? ...