Python入门经典.docx

上传人:b****3 文档编号:4191276 上传时间:2023-05-06 格式:DOCX 页数:71 大小:56.87KB
下载 相关 举报
Python入门经典.docx_第1页
第1页 / 共71页
Python入门经典.docx_第2页
第2页 / 共71页
Python入门经典.docx_第3页
第3页 / 共71页
Python入门经典.docx_第4页
第4页 / 共71页
Python入门经典.docx_第5页
第5页 / 共71页
Python入门经典.docx_第6页
第6页 / 共71页
Python入门经典.docx_第7页
第7页 / 共71页
Python入门经典.docx_第8页
第8页 / 共71页
Python入门经典.docx_第9页
第9页 / 共71页
Python入门经典.docx_第10页
第10页 / 共71页
Python入门经典.docx_第11页
第11页 / 共71页
Python入门经典.docx_第12页
第12页 / 共71页
Python入门经典.docx_第13页
第13页 / 共71页
Python入门经典.docx_第14页
第14页 / 共71页
Python入门经典.docx_第15页
第15页 / 共71页
Python入门经典.docx_第16页
第16页 / 共71页
Python入门经典.docx_第17页
第17页 / 共71页
Python入门经典.docx_第18页
第18页 / 共71页
Python入门经典.docx_第19页
第19页 / 共71页
Python入门经典.docx_第20页
第20页 / 共71页
亲,该文档总共71页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Python入门经典.docx

《Python入门经典.docx》由会员分享,可在线阅读,更多相关《Python入门经典.docx(71页珍藏版)》请在冰点文库上搜索。

Python入门经典.docx

Python入门经典

 

Python入门

原著GuidovanRossum

翻译李东风

∙第一章介绍

∙第二章解释程序的使用

∙第三章基本使用

∙第四章流程控制

∙第五章Python数据结构

∙第六章模块

∙第七章输入输出

∙第八章错误与例外

∙第九章类

∙第十章进一步学习

第一章介绍

脚本语言是类似DOS批处理、UNIXshell程序的语言。

脚本语言不需要每次编译再执行,并且在执行中可以很容易地访问正在运行的程序,甚至可以动态地修改正在运行的程序,适用于快速地开发以及完成一些简单的任务。

在使用脚本语言时常常需要增的新的功能,但有时因为脚本语言本来就已经很慢、很大、很复杂了而不能实现;或者,所需的功能涉及只能用C语言提供的系统调用或其他函数——通常所要解决的问题没有重要到必须用C语言重写的程度;或者,解决问题需要诸如可变长度字符串等数据类型(如文件名的有序列表),这样的数据类型在脚本语言中十分容易而C语言则需要很多工作才能实现;或者,编程者不熟悉C语言:

这些情况下还是可以使用脚本语言的。

在这样的情况下,Python可能正好适合你的需要。

Python使用简单,但它是一个真正的程序语言,而且比shell提供了更多结构和对大型程序的支持。

另一方面,它比C提供更多的错误检查,它是一个非常高级的语言,内置了各种高级数据结构,如灵活的数组和字典,这些数据结构要用C高效实现的话可能要花费你几天的时间。

由于Python具有更一般的数据结构,它比Awk甚至Perl适用的范围都广,而许多东西在Python内至少和在这些语言内一样容易。

 

Python允许你把程序分解为模块,模块可以在其他Python程序中重用。

它带有一大批标准模块可以作为你自己的程序的基础——或作为学习Python编程的例子。

系统还提供了关于文件输入输出、系统调用、插座(sockets)的东西,甚至提供了窗口系统(STDWIN)的通用接口。

 

Python是一个解释性语言,因为不需要编译和连接所以能节省大量的程序开发时间。

解释程序可以交互使用,这样可以可以很容易地试验语言的各种特色,写只用一次的程序,或在从底向上程序开发中测试函数。

它也是一个方便的计算器。

 

Python允许你写出非常严谨而且可读的程序。

用Python写的程序通常都比相应的C程序要短,因为如下几个理由:

 

∙高级的数据结构允许你用一个语句表达复杂的操作; 

∙复合语句是靠缩进而不是用表示开始和结束的括号; 

∙不需要变量声明或参量声明。

 

∙Python是可扩充的:

如果你会用C语言编程就很容易为解释程序增加新的内置函数或模块,这样可以以最快速度执行关键操作,或把Python程序和只能以二进制码提供的库(如不同厂商提供的图形库)连接起来。

当你变得确实很在行时你可以把Python解释器与用C写的应用相连接,把它作为该应用的扩展或命令语言。

Python的命名是由BBC的“MontyPython'sFlyingCircus”节目而得,与蟒蛇没有什么关系。

第二章解释程序的使用

 在命令行键入

python

或在Windows环境下双击相应的图标可以进入Python的解释程序。

如果要运行储存在文件中的Python程序,可以用

python文件名

的形式。

 

进入解释程序的环境后,解释程序称为处于交互状态。

在这种状态下系统用主提示提示输入下一个命令,这一般是三个大于号(>>>),如果需要续行系统用次提示提示输入,缺省为三个小数点(...)。

在主提示下键入文件尾符号(在UNIX中为Control-D,在DOS或Windows中为Control-Z)可以正常退出解释程序。

 Python解释程序的有些版本支持命令行编辑和命令历史,使用用Emacs或vi的键组合。

 

第三章基本使用

下面我们用例子来介绍Python的基本用法。

在例子中,用户输入和系统输出靠有没有提示(>>>和...)来分别。

如果要试这些例子的话,需要键入提示后的所有命令,例子中没有提示的行是系统的输出。

注意只有次提示的行意味着需要键入一个空行,这用于结束多行命令。

 

3.1用Python作计算器使用

启动解释程序,等待主提示>>>出现。

解释程序可以作为计算器使用。

键入一个表达式,解释程序就可以输出结果。

表达式的写法很直观:

+,-,*,/,%,**等算符的作用和其它大多数语言(如Pascal或C)没什么差别,括号可以用来组合。

例如:

 

>>>2+2

 

4

 

>>>#这是一个注释

...2+2

4

>>>2+2#和代码在同一行的注释

4

>>>(50-5*6)/4

5

>>>#整数除法得下面的整数

...7/3

2

>>>7/-3

-3

>>>

和C中一样,等于号用来给变量赋值,赋值的结果不显示:

>>>width=20

>>>height=5*9

>>>width*height

900

>>>

可以同时给几个变量赋同一个值:

>>>x=y=z=0#把x,y和z赋零

 

>>>x

0

>>>y

0

>>>z

0

>>>

Python完全支持浮点数,混合类型的运算会把整数先转换成浮点数:

>>>4*2.5/3.3

3.0303030303

>>>7.0/2

3.5

>>>

Python也提供了复数,方法是用j和J作为虚数单位,如1+1j,3.14e-10j,等等。

3.2.字符串

 Python除处理数字外还可以处理字符串,字符串用单撇号或双撇号包裹:

>>>'spameggs'

'spameggs'

>>>'doesn\'t'

"doesn't"

>>>"doesn't"

"doesn't"

>>>'"Yes,"hesaid.'

'"Yes,"hesaid.'

>>>"\"Yes,\"hesaid."

'"Yes,"hesaid.'

>>>'"Isn\'t,"shesaid.'

'"Isn\'t,"shesaid.'

>>>

字符串输出格式与输入的样子相同,都是用撇号包裹,撇号和其它特殊字符用用反斜杠转义。

如果字符串中有单撇号而没有双撇号则用双撇号包裹,否则应该用单撇号包裹。

后面要介绍的print语句可以不带撇号或转义输出字符串。

 字符串可以用+号连接起来,用*号重复:

>>>word='Help'+'A'

>>>word

'HelpA'

>>>'<'+word*5+'>'

''

>>>

字符串可以象在C中那样用下标索引,字符串的第一个字符下标为0。

Python没有单独的字符数据类型,一个字符就是长度为一的字符串。

象在Icon语言中那样,可以用片段(slice)记号来指定子串,片段即用冒号隔开的两个下标。

>>>word[4]

'A'

>>>word[0:

2]

'He'

>>>word[2:

4]

'lp'

>>>

片段有很好的缺省值:

第一下标省略时缺省为零,第二下标省略时缺省为字符串的长度。

>>>word[:

2]#前两个字符

'He'

>>>word[2:

]#除前两个字符串外的部分

'lpA'

>>>

注意s[:

i]+s[i:

]等于s是片段运算的一个有用的恒等式。

>>>word[:

2]+word[2:

]

'HelpA'

>>>word[:

3]+word[3:

]

 

'HelpA'

>>>

不合理的片段下标可以很好地得到解释:

过大的下标被换成字符串长度,上界小于下界时返回空串。

>>>word[1:

100]

'elpA'

>>>word[10:

]

''

>>>word[2:

1]

''

>>>

下标允许为负数,这时从右向左数。

例如:

>>>word[-1]#最后一个字符

'A'

>>>word[-2]#倒数第二个字符

'p'

>>>word[-2:

]#最后两个字符

'pA'

>>>word[:

-2]#除最后两个字符外的部分

'Hel'

>>>

但要注意的是-0实际还是0,所以它不会从右向左数!

>>>word[-0]#(因为-0等于0)

'H'

>>>

超出范围的片段下标被截断,但在非片段的情况下不要这样:

>>>word[-100:

]

'HelpA'

>>>word[-10]#错误

Traceback(innermostlast):

File"",line1

IndexError:

stringindexoutofrange

 

>>>

记住片段意义的最好方法是把下标看成是字符之间的点,第一个字符的左边界号码为0。

有n个字符的字符串的最后一个字符的右边界下标为n,例如:

 

+---+---+---+---+---+

|H|e|l|p|A|

+---+---+---+---+---+

012345

-5-4-3-2-1

 

第一行数字给出字符串中下标0到5的位置,第二行给出相应的负下标。

从i到j的片段由在边界i和j之间的字符组成。

 

对于非负下标,如果下标都在界内,则片段的长度为下标的差。

例如,word[1:

3]的长度为2。

 内置函数len()返回字符串的长度:

>>>s='supercalifragilisticexpialidocious'

>>>len(s)

34

>>>

多行的长字符串也可以用行尾反斜杠续行,续行的行首空白不被忽略,如

hello="Thisisaratherlongstringcontaining\n\

severallinesoftextjustasyouwoulddoinC.\n\

Notethatwhitespaceatthebeginningofthelineis\

significant.\n"

printhello

结果为

 

Thisisaratherlongstringcontaining

severallinesoftextjustasyouwoulddoinC.

Notethatwhitespaceatthebeginningofthelineissignificant.

对于特别长的字符串(比如包含说明的几段文字),如果用上面的方式每行都用\n\结尾是很麻烦的,特别是这样无法用象Emacs这样的功能强大的编辑器重新编排。

对这种情况,可以使用三重撇号,例如

hello="""

 

Thisstringisboundedbytripledoublequotes(3times").

Unescapednewlinesinthestringareretained,though\

itisstillpossible\ntouseallnormalescapesequences.

 

Whitespaceatthebeginningofalineis

significant.Ifyouneedtoincludethreeopeningquotes

youhavetoescapeatleastoneofthem,e.g.\""".

 

Thisstringendsinanewline.

"""

三重撇号字符串也可以用三个单撇号,没有任何语义差别。

多行的字符串常量可以直接连接起来,字符串常量之间用空格分隔则在编译时可以自动连接起来,这样可以把一个长字符串连接起来而不需要牺牲缩进对齐或性能,不象用加号连接需要运算,也不象字符串串内的换行其行首空格需要保持。

3.3列表

Python中有几种复合数据类型,用来把其它值组合到一起。

其中最灵活的是列表,可以写成在方括号之间用逗号隔开的若干值(项)。

列表的项不必取同一类型。

>>>a=['spam','eggs',100,1234]

>>>a

['spam','eggs',100,1234]

>>>

象字符串下标那样,列表下标从0开始,列表可以取片段,可以连接,等等:

>>>a[0]

'spam'

>>>a[3]

1234

>>>a[-2]

100

>>>a[1:

-1]

['eggs',100]

>>>a[:

2]+['bacon',2*2]

['spam','eggs','bacon',4]

>>>3*a[:

3]+['Boe!

']

['spam','eggs',100,'spam','eggs',100,'spam','eggs',100,'Boe!

']

>>>

与字符串不同的是列表是可变的,可以修改列表的每个元素:

>>>a

['spam','eggs',100,1234]

>>>a[2]=a[2]+23

>>>a

['spam','eggs',123,1234]

>>>

也可以给一个片段重新赋值,这甚至可以改变表的大小:

>>>#替换若干项:

...a[0:

2]=[1,12]

>>>a

[1,12,123,1234]

>>>#去掉若干项:

...a[0:

2]=[]

>>>a

[123,1234]

>>>#插入若干项:

...a[1:

1]=['bletch','xyzzy']

>>>a

[123,'bletch','xyzzy',1234]

>>>a[:

0]=a#在开头插入自身

>>>a

[123,'bletch','xyzzy',1234,123,'bletch','xyzzy',1234]

>>>

内置函数也使用于列表:

>>>len(a)

8

>>>

可以建立嵌套列表(表的元素也是列表),如:

>>>q=[2,3]

>>>p=[1,q,4]

>>>len(p)

3

>>>p[1]

[2,3]

>>>p[1][0]

2

>>>p[1].append('xtra')#列表方法

>>>p

[1,[2,3,'xtra'],4]

>>>q

[2,3,'xtra']

>>>

注意这个例子中p[1]和q实际是同一个对象!

也就是说它们只不过是同一个东西的两个名字(引用)而已。

3.4编程初步

Python当然不是只能用来把两个数加到一起,它可以完成很复杂的工作。

例如,我们可以写出Fibonacci序列的开始几个:

>>>#Fibonacci序列:

...#两个元素的和定义下一个

...a,b=0,1

>>>whileb<10:

...printb

...a,b=b,a+b

...

1

1

2

3

5

8

>>>

这个例子介绍了几个新特色。

第一行包含一个多重赋值:

变量a和b同时得到新值0和1。

在最后一行又用了多重赋值,我们可以看出赋值时先把右边都算出后再进行赋值。

while循环当循环条件(这里即:

b<10)成立时不断执行。

在Python中和C中一样,非零整数值为真值,零为假值。

条件也可以是字符串或列表或任何序列,长度为非零的为真,空序列为假。

例子中所用的是一个简单比较。

标准的比较算符和C一样:

<,>,==,<=,>=和!

=。

循环体是缩进的:

缩进是Python用来组合语句的方式。

Python目前还不能提供智能自动缩进,所以你需要自己为每个缩进行键入制表符或空格。

实际使用中你可以用文本编辑程序为Python准备复杂的输入,多数文本编辑程序都有自动缩进的功能。

在交互输入复合语句时必修附加一个空行以指示复合语句的完成(因为解释程序无法猜到哪是语句的最后一行)。

print语句显示后面的表达式值。

这和直接写出表达式不同,它可以显示多个表达式和字符串,而且可以用于程序文件中。

显示时字符串没有撇号,各项目之间插入一个空格,所以你可以以精美的格式显示,如:

>>>i=256*256

>>>print'Thevalueofiis',i

Thevalueofiis65536

>>>

在尾部写一个逗号可以避免最后换行:

>>>a,b=0,1

>>>whileb<1000:

...printb,

...a,b=b,a+b

...

1123581321345589144233377610987

>>>

注意如果前一行没有结束的话系统在显示提示之前先换行。

Python还提供了和C语言一样的printf格式的输出方式,这是用%实现的,左边是格式,如:

 

>>>print'Thevalueof1/7isapproximately%5.3f.'%0.142857

Thevalueof1/7isapproximately0.143.

>>>

如果有多个需要输出的项百分号右边的项可以是一个序组,如

>>>print"Name:

%-10sAge:

%3d"%("White",31)

Name:

WhiteAge:

31

 

第四章流程控制

前面我们已经见到了如何由用while结构控制流程运行。

这一章我们介绍更多的控制结构。

Python具有和其它语言类似的控制结构但略有差别。

4.1If语句

If语句可能是最基本的程序分支语句了。

例如:

>>>ifx<0:

...x=0

...print'Negativechangedtozero'

...elifx==0:

...print'Zero'

...elifx==1:

...print'Single'

...else:

...print'More'

...

可以有零到多个elif部分,else部分可选。

关键字elif是elseif的缩写,这样可以缩短语句行长度。

其它语言中switch或case语句可以用if...elif...elif...语句组来实现。

4.2for语句

Python中的for语句与你可能熟悉的C或者Pascal中的相应语句略有不同。

不象Pascal那样总是对数字序列进行循环,也不是象C中那样完全由程序员自由地控制循环条件和循环体,Python的for循环是对任意种类的序列(如列表或字符串)按出现次序遍历每一项。

例如:

>>>#计算字符串长:

...a=['cat','window','defenestrate']

>>>forxina:

...printx,len(x)

...

cat3

window6

defenestrate12

>>>

尽量不要在循环体内修改用来控制循环的序列(当然,只有可变的序列类型如列表才有可能被修改),这样程序可能会出问题。

如果需要这样,比如说要复制某些项,可以用序列的副本来控制循环。

片段记号让你很容易生成副本:

>>>forxina[:

]:

#生成整个列表的片段副本

...iflen(x)>6:

a.insert(0,x)

...

>>>a

['defenestrate','cat','window','defenestrate']

>>>

结果是把列表中长度超过6个字符的字符串插入到列表开头。

4.3range()函数

如果确实需要对一列数字进行循环的话,可以使用内置函数range()。

它生成包含数字序列的列表,如:

>>>range(10)

[0,1,2,3,4,5,6,7,8,9]

>>>

注意给出的终点永远不出现在生成的列表中,range(10)生成一个十个数的列表,恰好是长度为10的序列的合法下标的各个值。

也可以指定不同的起始点,或者指定不同的间隔(甚至负数):

>>>range(5,10)

[5,6,7,8,9]

>>>range(0,10,3)

[0,3,6,9]

>>>range(-10,-100,-30)

[-10,-40,-70]

>>>

为了对序列的下标进行循环,如下联合使用range()和len():

>>>a=['Mary','had','a','little','lamb']

>>>foriinrange(len(a)):

...printi,a[i]

...

0Mary

1had

2a

3little

4lamb

>>>

 

4.4break语句,continue语句和循环中的else子句

如同C语言一样,break语句跳出其所处的最内层的for或while循环,continue语句继续下一循环步。

循环语句还可以带一个else子句,当循环正常结束时执行其内容,但如果循环是用break语句跳出的则不执行其内容。

下例说明了这种用法,此例求素数:

>>>forninrange(2,10):

...forxinrange(2,n):

...ifn%x==0:

...printn,'equals',x,'*',n/x

...break

...else:

...printn,'isaprimenumber'

...

2isaprimenumber

3isaprimenumber

4equals2*2

5isaprimenumber

6equals2*3

7isaprimenumber

8equals2*4

9equals3*3

>>>

 

4.5pass语句

pass语句不执行任何操作,当语法要求一个语句而程序不需要执行操作时就用此语句。

例如:

>>>while1:

...pass#等待键盘中断

...

 

4.6函数定义

我们可以定义一个函数用来计算某一界限以下的所有Fibonacci序列值:

>>>deffib(n):

#写出n以下的所有Fibonacci序列值

...a,b=0,1

...whileb

...printb,

...a,b=b,a+b

...

>>>#调用刚刚定义的函数:

...fib(2000)

 

11235813213455891442333776109871597

>>>

其中关键字def开始一个函数定义,其后应该是函数名,括号内的形参表,以冒号结束。

构成函

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2