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