重读LPTHW-Lesson37

这次是复习课  复习python符号  整理如下

1.逻辑运算符not、and、or

python中逻辑运算符包括not(布尔非)、and(布尔与)、or(布尔或)。注意以下几点:

①运算规则:

例:

②运算优先级:not的优先级大于and和or的优先级,而and和or的优先级相等。逻辑运算符的优先级低于关系运算符,必须先计算关系运算符,然后再计算逻辑运算符

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,输出: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"

输出:

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

输出:

时间: 2024-10-21 23:47:03

重读LPTHW-Lesson37的相关文章

Effective Objective-C 2.0重读笔记---1

上次看这本书的时候匆匆走了一遍,最近不太忙,重温了一遍,把笔记写出来~.. 有兴趣的可以去买一本,感觉这本书还是挺不错的 由于大部分是在坐车的时候用手机写的,所以代码很少,图也很少 1. 尽量使用向前声明,延后引入头文件的时间,这样可以减少编译时间2. 使用arraywithobjects:....如果遇到为空的变量,就会自动终止,后面的变量便会添加不上,切不会报错,会造成数据不一致问题,所以尽量使用字面量语法创建相关对象,减少出错且减少代码量3. 使用字面量创建的对象都是不可变的,如果要获得可

重读规则

一般来讲,英语单词的重读是没有固定的规律而言的.但有些规则在多数情况下是可以适用的,这些规则有:重读规律1.一般2.3个音节的单词,重读在第一音节上.如:'apple 'carry 'problem. 但如果这个单词是带有前缀的,则重读则在前缀后.如:a'bove a'go com'bine en'courage2.3个或以上音节的单词,重读在倒数第三个音节上. 'family de'mocracy phy'losophy 3.带有后缀的单词,重读在后缀前(以下后缀除外:-ed,-es,-er,

LPTHW 笨办法学python 40章 类

今天读了LPTHW的第40章以后豁然开朗,原来一直愚钝,不太理解类的定义和使用,还有就是不太理解关于self的定义. class MyStuff(object): def __init__(self): self.tangerine = "And now a thousand years between" def apple(self): print "I AM CLASSY APPLES!" 说类和迷你模块差不多,那么对于类来说,也必然有一个类似 import 的

重读C++ Primer笔记

C++ Primer 5E 有符号和无符号 无符号类型和有符号类型混合运算时,有符号数会被提升至无符号类型,如果其值为负责会产生错误. int main() { unsigned int u = 10; int i = -42; std::cout<<u+i<< std::endl; // 4294967264 if sizeof(int)==4 return 0; } 列表初始化 列表初始化过程不允许损失数据类型精度,所以下面代码中的两行无法通过编译 int main() { d

LPTHW 结束了

基本上在学习了LPTHW的 类 继承 和 合成以后基本就结束. 后面几章都是根据web.py进行网页编程,以及自动化测试的.目前来看不太感兴趣. 稍后我可能找个实际项目进行锻炼下,比如 Crossin python教程.明天应该有一些实践,并更新心得. 笨方法学python 的学习算是告一段落了.其实原来就读过这本书,但是没有像现在一样,踏踏实实的读出来.而且后续虽然没有读这本书,但是也一直在接触python这个语言,所以这次又回过头来读了一遍,受益匪浅. 其实任何书都是一样,第一遍读的时候,感

[C/C++]重读《The C Programming Language》

第一次读这本书的时候是大三初,现在打算重读一遍!. 第一章 导言 1. 学习一门新程序设计语言的唯一途径就是用它来写程序. 2. 每个程序都从main函数的起点开始执行. 3. 在C语言中,所有变量必须先声明后使用. 4. C语言中的基本数据类型的大小取决于具体机器. 5. 在允许使用某种类型变量值的任何场合,都可以使用该类型的更复杂的表达式. 6. 标准库的输入/输出模型是按照字符流的方式处理,每行字符都有0个或者多个字符组成,末尾是换行符. 7. 函数为计算的封装提供了一种简便的方法,函数都

守护进程重读配置文件示例

重读APUE,对守护进程有了更加深刻的理解,特别是相应的编程规则和应用场景.对于为什么要fork两次,日志设施的用法,信号的处理方法都有了更加清晰的认识.通常的应用场景是,守护进程在收到一个SIGHUP信号的时候重新读取配置文件,而不需要停止.下面是运行APUE书中这个实例的过程. 首先主要代码为(reread.c): #include "util.h" #include <pthread.h> #include <syslog.h> sigset_t mask

温故知新---重读C#InDepth(一)

一本好书,或是一本比较有深度的书,就是每次研读的时候都会有新的发现. 好吧,我承认每次读的时候都有泛泛而过的嫌疑~~ 这几年一直专注于C#客户端的开发,逐步从迷迷糊糊,到一知半解,再到自以为是,最后沉下心重新审视.也许这也是一种进步一种自我学习的过程. 前面啰嗦了这么多,希望大家也能不那么浮躁的“深入理解”C#这么语言的每个知识点.本文总结书本中的知识,在结合实际应用场合进行概述,如果有不正确的地方,还请不吝指教. 文章中的内容比较浅显,请高手略过此文. 1. 简化了的COM操作 private

重读dvwa的笔记

0x00 花了些时间把dvwa重新看了一遍 虽然以前已经玩过这个 ,但是这次从源码出发的重读还是有新收获 决定写一个学习笔记 0x01 首先是环境搭建 类似的环境搭建文章网上有太多了 而且这篇文章也写的非常好(我就是参照这个搭建的) http://www.freebuf.com/sectool/102661.html 顺便一提测试的时候记得要在php.ini中开启几个函数 0x02 首先是Brute Force  暴力破解 low 在low下源码的部分 $user = $_GET[ 'usern

不忘初心 --- 重读&lt;&lt;The C Programming Language&gt;&gt;

这篇文章应该发布在好几年前,2011年计算机界大师Dennis Ritchie仙逝.那时对大师的映象还停留在大一刚学编程时:Unix的合作开发者:C语言的发明人.通过网上的纪念文章<<Unix传奇>>才真正了解到大师的伟大之处.那年我参加工作刚好1年,所使用的语言是c#(从大二开始学习,也没想到伴随我到现在).抱着纪念大师的想法也顺便重温下C语言,我在书店买了一本原版的<<The C Programming Language>>.没想到这本书"读了