资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Python,语言介绍及编程入门,1,概述,Python,是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。,Python,具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。,2,Python,的特色,(,一,),可扩充性可说是,Python,作为一种编程语言的特色。新的内置模块(,module,)可以用,C,或,C+,写成。而我们也可为现成的模块加上,Python,的接口。,Python,可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上。,3,Python,的特色,(,二,),Python,也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。它使你能够专注于解决问题而不是去搞明白语言本身。,Python,语言是一种清晰的语言的另一个意思是,它的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如,if,语句的下一行不向右缩进)都不能通过编译。这样有意的强制程序员养成良好的编程习惯。,其中很重要的一项就是,Python,的缩进规则。,例如,if,语句:,if age21:,print You cannot buy wine!n,print But you can buy chewing gum.nprint this is outside ifn,4,Python,的特色,(,三,),一个和其他大多数语言(如,C,)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定的(而,C,语言是用一对花括号,来明确的定出模块的边界的,与字符的位置毫无关系)。不过不可否认的是,通过强制程序员们缩进(包括,if,,,for,和函数定义等所有需要使用模块的地方),,Python,确实使得程序更加清晰和美观。另外,Python,在其他部分的设计上也坚持了清晰划一的风格,这使得,Python,称为一门易读性、易维护性好,并且被大量用户所欢迎的、用途广泛的语言。,5,Python,的特色,(,四,),Python,语法,:,Python,增加了什么,-,新的语法成分冒号(,:,)。所有的复合语句(语句中嵌套了语句)都有相同的一般形式,就是首行以冒号结尾,首行下一行嵌套的代码往往按缩进的格式书写。,Python,删除了什么,-,括号是可选的,-,终止行就是终止语句(分号),-,缩进的结束就是代码块的结束(,),6,Python,中的关键字和语法,if,:当条件成立时执行语句块。经常与,else,elif(,相当于,else if),配合使用。,for,:遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。,while,:当条件为真时,循环执行语句块。,try,:与,except,finally,配合使用处理在程序运行中出现的异常情况。,class,:用于定义类型。,def,:用于定义函数和类型的方法。,pass,:表示此行为空,不执行任何操作。,assert,:用于程序调试阶段时测试运行条件是否满足。,with,:,Python2.6,以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加锁,然后在语句块运行结束后释放它。,yield,:在迭代器函数内使用,用于返回一个元素。,global,:定义全局变量。,lambda,:定义匿名函数。,7,常见的运算符及其用法,运算符,名称,说明,例子,+,加,两个对象相加,3+5,得到,8,。,a+b,得到,ab,。,-,减,得到负数或是一个数减去另一个数,-5.2,得到一个负数。,50-24,得到,26,。,*,乘,两个数相乘或是返回一个被重复若干次的字符串,2*3,得到,6,。,la*3,得到,lalala,。,*,幂,返回,x,的,y,次幂,3*4,得到,81,(即,3*3*3*3,),/,除,x,除以,y,4/3,得到,1,(整数的除法得到整数结果)。,4.0/3,或,4/3.0,得到,1.3333333333333333,/,取整除,返回商的整数部分,4/3.0,得到,1.0,%,取模,返回除法的余数,8%3,得到,2,。,-25.5%2.25,得到,1.5,左移,把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即,0,和,1,),2,右移,把一个数的比特向右移一定数目,11 1,得到,5,。,11,按比特表示为,1011,,向右移动,1,比特后得到,101,,即十进制的,5,。,8,常见的运算符及其用法,运算符,名称,说明,例子,&,按位与,数的按位与,5&3,得到,1,。,|,按位或,数的按位或,5|3,得到,7,。,按位异或,数的按位异或,5 3,得到,6,按位翻转,x,的按位翻转是,-(x+1),5,得到,6,。,9,常见的运算符及其用法,运算符,名称,说明,例子,小于,返回,x,是否小于,y,。所有比较运算符返回,1,表示真,返回,0,表示假。这分别与特殊的变量,True,和,False,等价。注意,这些变量名的大写。,5 3,返回,0,(即,False,)而,3 5,返回,1,(即,True,)。比较可以被任意连接:,3 5,大于,返回,x,是否大于,y,5 3,返回,True,。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回,False,。,=,小于等于,返回,x,是否小于等于,y,x=3;y=6;x=,大于等于,返回,x,是否大于等于,y,x=4;y=3;x=y,返回,True,。,=,等于,比较对象是否相等,x=2;y=2;x=y,返回,True,。,x=str;y=stR;x=y,返回,False,。,x=str;y=str;x=y,返回,True,。,!=,不等于,比较两个对象是否不相等,x=2;y=3;x!=y,返回,True,。,10,Python,语法的基本概念,1.,数:整数、长整数、浮点数、复数。,2.,字符串:,(,1,)在双引号中的字符串与单引号中的字符串的使用完全相同,(,2,)利用三引号,“”“,或,”,你可以指示一个多行的字符串,(,3,)转义符,,但在一个字符串行末的单独一个反斜杠用于续行,(,4,)自然字符串:通过给字符串加上前缀,r,或,R,来指定,这样就保持原样(不转义),(,5,),Unicode,字符串:在字符串前加上前缀,u,或,U,,例:,u,“,这是,unicode,”,3.,变量:使用变量时只需要给它们赋一个值。不需要声明或定义数据类型。,4.,标识符:以字母表中的字母(大写或小写)、下划线(,_,)或数字(,0-9,)组成,并且第一个字符必须是字母(大写或小写)或下划线(,_,)。,5.,缩进:在,Python,语法,没有使用大括号而是以缩进的方式来标示语句块,即同一层次的语句必须有相同的缩进。,11,Python,语法的基本概念,7.,控制流,(,1,),if,语句:形式如下(注意,if,语句在结尾处包含一个冒号,告诉,Python,语法下面跟着一个语句块;并且,没有,switch,语句),if condition:,statement,elif condition:,statement,else,statement,(,2,),while,语句:形式如下,while condition:,statement,else:,(,3,),for,语句:形式如下,for element in collection:,statement,else:,(,4,),break,语句:形式同其他语言,需要注意的是,如果从,for,或,while,循环中终止,任何对应的循环,else,块将不执行,(,5,),continue,语句:形式同其他语言,8.,函数:通过,def,定义。,Def,后跟一个函数的标识符名称,然后跟一对圆括号。括号中可以包括一些变量名,该行以冒号结尾,接下来是一块语句,它们是函数体,例:,def function_name():,statement,12,文件读写,open(),函数,f=open(,“,foo,”,“,w,”,)#,写方式打开文件,g=open(,“,bar,”,“,r,”,)#,只读方式打开文件,f.close()#,关闭文件,文件,的读取,/,写入,f.write(Hello World),buff,=g.read()#,读取文件所有数据,line=g.readline()#,读一行数据,lines=g.readlines()#,以列表的方法返回文件所有数据,格式化的输入,使用,%,来格式化字符串,for i in range(0,10):,f.write(2 times%d=%dn%(i,2*i),13,Python,、,Perl,、,Ruby,的比较,Python:,首先就以语法而论,,python,没有,perl,的灵活紧凑。它可以编写运行在操作系统的应用程序,可以编写,web,代码,它不是脚本语言但是有脚本语言的功能,他和,java,,,C+,,,C,地位差不多。它代码的运行效率高,有的代码几乎能和,C+,相比,它还能嵌入到,C+,中,很方便。它适合用来做小网站。如果在,Linux,系统的话编写命令是很好的,和,perl,一样,而且运行速度很快。,perl,易写难读,而,Python,强制编程员有个良好的编程习惯。好在他学起来非常容易。,14,Python,、,Perl,、,Ruby,的比较,Perl:,Perl,强大的正则表示式比对以及字符串操作使这个工作变得简单而没有其它语言能相比。,Perl,非常擅长于切割,扭转,绞,弄平,总结,以及其它的操作文字文件。,Perl,能容错,它并不介意某个值是空的或是有奇怪的字符,正规表示式能够被写成取出并且更正错误的一般错误。,15,Python,、,Perl,、,Ruby,的比较,Ruby:,Ruby,是面向对象的编程语言,是脚本语言和,PHP,一样。它追求的是,“,简便快捷的面向对象编程,”,。,Ruby,是解释型语言,因此不需编译即可快捷地编程。同时,Ruby,具有类似,Perl,的强大的文本处理功能,可以用它来进行实用的编程。此外,您还可以很方便地使用,C,语言来扩展,Ruby,的功能,因此可以把它当作各种库的前端来使用。,Ruby,很适合做中小型,web,工程,它和,jsp,(,J2EE,)并不冲突,一个是低端的一个是高端的。,16,Python,、,Perl,、,Ruby,的比较,总结,:,Perl,精练、复杂、强大、灵活、自由、表现力强,但规范性、可读性、一致性、整洁性和可维护性较差。,Python,优雅规范、简洁明晰、易学易用、类库丰富,但效率稍差,有些人不喜欢它对空白符敏感的特性。,Ruby,语法精巧、高度灵活,兼具,Perl,的表现力和,Python,的可读性,尤其注重程序员的感受,但其性能和线程模型尚有待改进。,17,Python,编程实例,冒泡算法,:,num=23,2,3,6,18,9,33,13,24,19,for j in range(len(num):-1:,for i in range(j):,if(i numi+1):,temp=numi,del numi,num.insert(i+1,temp),print num,输出结果,:,2,3,6,9,13,18,19,23,24,33,18,Python,编程实例,计算从,1,到,n,的自然数中有多少个数字,1,,例如,10,包含一个,“,1,”,,而,110,则包含两个,“,1,”,:,#,计算从,1,到,n,的自然数中数字,1,的个数,g_count=0,for,i,in,range(1,100000):,g_count=g_count+str(i).count(1),if,(i=9,or,i=99,or,i=999,or,i=9999,or,i=99999):,print,(,从,1,到,%d,共有,%d,个数字,1%(i,g_count),输出结果,:,从,1,到,9,共有,1,个数字,1,从,1,到,99,共有,20,个数字,1,从,1,到,999,共有,300,个数字,1,从,1,到,9999,共有,4000,个数字,1,从,1,到,99999,共有,50000,个数字,1,19,Python,编程实例,mySQL,的应用:,#-*-encoding:gb2312-*-,import os,sys,string,import MySQLdb,#,连接数据库,try:,conn=MySQLdb.connect(host=localhost,user=root,passwd=xxxx,db=test1),except Exception,e:,print e,sys.exit(),#,获取,cursor,对象来进行操作,cursor=conn.cursor(),#,创建表,sql=create table if not exists test1(name varchar(128)primary key,age int(4),cursor.execute(sql),#,查询出数据,sql=select*from test1,cursor.execute(sql),alldata=cursor.fetchall(),#,插入数据,sql=insert into test1(name,age)values(%s,%d)%(zhangwei,23),try:,cursor.execute(sql),except Exception,e:,print e,sql=insert into test1(name,age)values(%s,%d)%(,张三,21),try:,cursor.execute(sql),except Exception,e:,print e,#,插入多条,sql=insert into test1(name,age)values(%s,%s),val=(,李四,24),(,王五,25),(,洪六,26),try:,cursor.executemany(sql,val),except Exception,e:,print e,#,查询出数据,sql=select*from test1,cursor.execute(sql),alldata=cursor.fetchall(),#,如果有数据返回,就循环输出,alldata,是有个二维的列表,if alldata:,for rec in alldata:,print rec0,rec1,cursor.close(),conn.close(),20,
展开阅读全文