6–6. 字符串.创建一个 string.strip()的替代函数:接受一个字符串,去掉它前面和后面的 空格(如果使用 string.*strip()函数那本练习就没有意义了) 'Take a string and remove all leading and trailing whitespace' def newStrip(str): 'delete blanks around a string' _end = len(str) _start = 0 # delete the blanks…
4-1Python objects All Python objects have three attributes:type,ID,and value. All are readonly with a possible expection of the value(which can be changed only if the object is mutable). 4-5str()and repr() repr() is a built-in function while str() wa…
5-8Geometry import math def sqcube(): s = float(raw_input('enter length of one side: ')) print 'the area is:', s ** 2., '(units squared)' print 'the volume is:', s ** 3., '(cubic units)'def cirsph(): r = float(raw_input('enter length of radius: ')) p…
3-4Statements Ues ; 3-5Statements Use\(unless part of a comma-separated sequence in which case \ is optional)…
2-5 Loops and Numbers a) i = 0    while i <11:     print i    i += 1 b) for i in range(0,11): print i 2-6 Conditionals n =int( raw_input('enter a number:')) if n < 0: print 'negative' elif n > 0: print 'positive' else: print 'zero' 2-7 Loops and…
6-8.列表.给出一个整型值,返回代表该值得英文,比如输入89会返回“eight-nine”.附加题:能够返回符合英文语法规律的新式,比如输入89会返回“eighty-nine”.本练习中的值假定在0~1000.[答案]代码如下: number = int(raw_input('Please input a number between 1 to 1000: ... ')) units = ['zero', 'one', 'two', 'three', 'four', 'five', 'six'…
随机数.设计一个“石头.剪子.布”游戏,有时又叫“Rochambeau”,你小时候可能玩过,下面是规则.你和你的对手,在同一时间做出特定的手势,必须是下面一种:石头.剪子.布.胜利者从下面的规则产生,这个规则本身是个悖论.(a)布包石头.(b)石头砸剪子.(c)剪子剪破布.在你的计算机版本中,用户输入他/她的选项,计算机找一个随机选项,然后由你的程序来决定一个胜利者或者平手.注意,最好的算法是尽量少使用if语句.[答案]代码如下: #!/usr/bin/env python # -*- codi…
6-13.字符串.string模块包含三个函数,atoi(),atol()和atof(),他们分别负责把字符串转换成整型.长整型和浮点型数字.从Python 1.5起,Python的内建函数int().long().float()也可以做同样的事了,本文来,complex()函数可以把字符串转换成复数(然而1.5之前,这些转换函数只能工作于数字之上)自博客园.string模块中并没有实现一个atoc()函数,那么你来实现一个atoc(),接受单个字符串做参数输入,一个表示复数的字符串,例如'-1…
6-11.转换.(a)创建一个从整型到IP地址的转换,如下格式:www.xxx.yyy.zzz.(b)更新你的程序,使之可以逆转换.[答案](a)代码如下: Input_number = abs(int(raw_input('Please input a number: '))) x3 = x2 = x1 = x0 = 0 x3 = Input_number / (256 ** 3) if x3 > 255: tmp = x3 x3 = 255 else: tmp = x3 x2 = (Inpu…
6-10.字符串.写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反转,比如,输入“Mr.Ed”,应该返回“mR.eD”作为输出.[答案]代码如下: #!/usr/bin/env python from lib2to3.fixer_util import String #string lower into upper,upper into lower input = raw_input('Please input a string: ') output = '' for i in…
6-9.转换.为练习5-13写一个姊妹函数,接受分钟数,返回小时数和分钟数.总时间不变,并且要求小时尽可能大.[答案]代码如下: #!/usr/bin/env python # translate minutes into xxHxxM. minutes = int(raw_input('Please input minutes number: ')) h = int(minutes/60) m = minutes%60 print '%d minutes equals %d Hour %d M…
2-1 变量, print 和字符串格式化运算符.启动交互式解释器.给一些变量赋值(字符串,数值等等)并通过输入变量名显示它们的值.再用 print 语句做同样的事.这二者有何区别? 也尝试着使用字符串格式运算符 %, 多做几次, 慢慢熟悉它. print来显示变量的内容,仅用变量名时,输出的字符串使用单引号括起来的,这是为了让非字符串对象也能以字符串的方式显示在屏幕上,print语句使用str()函数显示对象,交互解释器调用repr()函数来显示对象 2-2程序输出, 阅读下面的 Python…
1-1 在windows下的安装方法在网上下载python2.7直接安装到C盘1)在系统变量中找到path. 2)编辑path值,添加你安装的python路径,C:\Python27. 3)检验python是否安装配置成功,打开cmd,输入python,如果出现以下界面,则说 明你的python安装成功了.   1-2 a.三种方法执行python 1)启动交互式解释器powershell python,每次输入一行python代码 2)运行python的脚本 3)集成开发环境图形界面(IDLE…
1.序列类型操作符 序列操作符 作用 seq[ind] 获得下标为ind 的元素 seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合 seq * expr 序列重复expr 次 seq1 + seq2 连接序列seq1 和seq2 obj in seq 判断obj 元素是否包含在seq 中 obj not in seq 判断obj 元素是否不包含在seq 中 2.序列类型可用的内建函数 函数名 功能 enumerate(iter) 接受一个可迭代对象作为参数,返回一个en…
转换.(a)给出两个可识别格式的日期,比如MM/DD/YY或者DD/MM/YY格式.计算出两个日期之间的天数.(b)给出一个人的生日,计算此人从出生到现在的天数,包括所有的闰月.(c)还是上面的例子,计算出此人下次过生日还有多少天. [答案](a)代码如下: def date_convert(date_input): month = int(date_input.split('/')[0]) day = int(date_input.split('/')[1]) year = int('20'…
6-12.字符串.(a)创建一个名字为findchr()的函数,函数声明如下.def findchr(string, char)findchr()要在字符串string中查找字符char,找到就返回该值得索引,否则返回-1.不能用string.*find()或者string.*index()函数和方法.(b)创建另一个叫rfindchr()的函数,查找字符char最后一次出现的位置.它跟findchr()工作类似,不过它是从字符串的最后开始向前查找的.(c)创建第三个函数,名字叫subchr()…
1.*函数(与方法)装饰器 装饰器背后的主要动机源自python 面向对象编程.装饰器是在函数调用之上的修饰.这些修饰 仅是当声明一个函数或者方法的时候,才会应用的额外调用. 装饰器的语法以@开头,接着是装饰器函数的名字和可选的参数.紧跟着装饰器声明的是被修饰 的函数,和装饰函数的可选参数.装饰器看起来会是这样: @decorator(dec_opt_args) def func2Bdecorated(func_opt_args): : 那么什么是装饰器? 现在我们知道装饰器实际就是函数.我们也…
1.继续( \ ) 有两种例外情况一个语句不使用反斜线也可以跨行.在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号.中括号.花括号时可以多行书写.另外就是三引号包括下的字符串也可以跨行书写 2.变量赋值 赋值并不是直接将一个值赋给一个变量, 尽管你可能根据其它语言编程经验认为应该如此.在Python 语言中,对象是通过引用传递的.在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量. 3.关键字 # 判断是否为关键字 import keywor…
1.这是python的语言特性,python先创建对象,在给变量赋值时,不需要定义变量的名称和类型,它实际是用变量引用对象.变量类型在给变量赋值时自动声明 2.原因类似变量无须声明类型 3.python用下划线作为变量前缀和后缀指定特殊变量,对解释器有特殊意义,也是内建标识符所使用的特殊符号,故一般避免用下划线作为变量的开头和结尾 4.python一行可以书写多个语句,多个语句间用";"分隔.但是为了良好的编程风格,不推荐这么做 5.python可以将一个语句分成多行书写,行的末尾用反…
1.语句和语法 (1)反斜杠"\"表示语句继续.python良好的编程习惯是一行最后不超过80个字符,一行字符过多时便须用到反斜杠换行继续该语句. PS:在使用小括号.中括号.大括号时可以跨行书写,无须反斜杠:三引号的字符串也可以跨行书写 (2)分号";"可以在同一行写多个语句.虽然python支持这么做,但为了代码可读性,一般不建议这么做 2.变量赋值 (1) python中,对象是引用传递的,而不是直接将值赋给对象  如: >>> a = 12…
2.1   程序输出:print语句         可以使用print语句显示变量的字符串表示,或者仅用变量名查看该变量的原始值. 2.2   程序输出和raw_input()内建函数          下划线(_)在解释器中表示最后一个表达式的值.          print语句与字符串格式运算符(%)结合使用,可实现字符串替换功能,(与C语言中的printf()非常相似),例:                      >>符号重定向.例:                      r…
9–1. 文件过滤. 显示一个文件的所有行, 忽略以井号( # )开头的行. 这个字符被用做Python , Perl, Tcl, 等大多脚本文件的注释符号.附加题: 处理不是第一个字符开头的注释. filename = input("输入文件名:") with open(filename) as f: for i in f: if i.startswith('#'): continue else: print(i, end='') 9–2. 文件访问. 提示输入数字 N 和文件 F,…
6.6 线程的一些性质 到现在为止,讲述了如何实现线程函数和如何让系统创建线程以便执行该函数.本节将要介绍系统如何使这些操作获得成功. 图6 - 1显示了系统在创建线程和对线程进行初始化时必须做些什么工作.让我们仔细看一看这个图,以便确切地了解发生的具体情况.调用 C r e a t e T h r e a d可使系统创建一个线程内核对象.该对象的初始使用计数是2(在线程停止运行和从C r e a t e T h r e a d返回的句柄关闭之前,线程内核对象不会被撤消) .线程的内核对象的其他…
第6章 线程的基础知识 理解线程是非常关键的,因为每个进程至少需要一个线程.本章将更加详细地介绍线程的知识.尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用.还要介绍系统如何使用线程内核对象来管理线程.与进程内核对象一样,线程内核对象也拥有属性,我们将要观察许多用于查询和修改这些属性的函数.此外还要介绍可以在进程中创建和生成更多的线程时所用的函数. 第4章介绍了进程是由两个部分构成的,一个是进程内核对象,另一个是地址空间.同样,线程也是由两个部分组成的: • 一个是线程的内核对象,…
什么是Python Python的起源 Python的特点 下载Python 安装Python 运行Python Python文档 比较Python 其他实现   1.什么是Python        Python是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性.它可以帮你完成工作,而且一段时间以后,你还能看明白自己写的这段代码.   2.Python的起源   1989年底,Guido van Rossum始创了Python: 1991年…
每个线程都有一个CONTEXT结构,保存在线程内核对象中.大约每隔20ms windows就会查看所有当前存在的线程内核对象.并在可调度的线程内核对象中选择一个,将其保存在CONTEXT结构的值载入cpu寄存器.这被称为上下文切换.大约又过20ms  windows将当前cpu寄存器存回内核对象,线程被挂起.Windows再次检查内核对象,并在可调度的内核对象中选择一个进行调度.此过程不断重复直到系统关闭. Windows被称为抢占式多线程系统,系统可以在任何时刻停止一个线程而另行调度另外一个线…
字典:它是一个容器类型,能存储任意个数的Python对象,也包括其他容器类型,Python的字典是作为可变的哈希表实现的 映像类型中的数据是无序排列的   可以用工厂方法dict()来创建字典,也可以用fromkeys()来创建一个默认键   检查一个字典中是否有某个键的最好方法是用字典的has_key()方法,或者in 或not in   两个字典进行比较时,先比较两个字典元素数,当元素数相同时比较键大小,当键相等比较值 比较算法:   映射类型的內建函数: hash()函数,用来判断某个对象…
1.用大写字母 “L”表示长整数 尽管 Python 也支持用小写字母 L 标记的长整型,但是我们郑重推荐您仅使用大写的 “L”, 这样能有效避免数字1 和小写L 的混淆.Python 在显示长整数类型数值的时候总是用大写“L ”, 目前整型和长整型正在逐渐缓慢的统一,您只有在对长整数调用repr()函数时才有机会看到 “L”,如果对长整数对象调用str()函数就看不到 L .举例如下: >>> aLong = 999999999l >>> aLong 99999999…
1.python对象 所有的Python 对像都拥有三个特性:身份,类型和值. 身份: 每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到. 这个值可以被认为是该对象的内存地址.您极少会用到这个值,也不用太关心它究竟是什么. 类型 对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则.您可以用内建函数type()查看Python 对象的类型.因为在Python 中类型也是对象(还记得我们提到Python 是面向对象的这句话吗?),…
1.print语句也支持将输入重定向到文件,示例: logfile = open('/tmp/mylog.txt', 'a') print >> logfile, 'Fatal error: invalid input!' logfile.close() 2.使用逻辑运算符可以将任意表达式连接在一起,并得到一个布尔值: >>> 2 < 4 and 2 == 4 False >>> 2 > 4 or 2 < 4 True >>&g…