版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python中。阅读本章的最好的方法就是在你的电脑上打开Python解释器,尝试示例,当然你也可以随心所欲的自己做实验。1–4中介绍了如何启动Python大部分读者已经了解二者的不同,但是不管怎样,我们还是再来复下。语句使用关键字来>>>printoWorld!'oWorld!本章中分别介绍语句和表达式。我们先来研究print语句程序输出,print语句及“o多数解释执行的语言,使用语句进行输出。很多的s语言使用echo命令来输出程序笔记:在交互式解释器中显示变量通常当你想看变量内容时,你会在代码中使用print语句输出。不过在交互式解释器中,你可以用print语句显示变量的字符串表示,或者仅使用变量名查看该变量的原始值。myString>>>myString=o>>>printmyStringoWorld!>>>o注意:在仅用变量名时,输出的字符串是被用单引号括起来了的。这是为了让非字符串对串本身引号表示你刚刚输入的变量的值是一个字符等你对Python有了较深入的了解之后,你就知道print句调用str()函数显示对象而交互式解释器则调用repr()函数来显示对象。程序输入和raw_input()内建函>>>oPythonprint一点和C语言中的printf()函数非常相似:Pythonisnumber1!关于字符串格式运算符的信息。Printimportprint>>sys.stderr,'Fatalerror:invalidinput!'importsysprint>>sys.stderr,'Fatalerror:invalidlogfile=open('/tmp/mylog.txt',print>>logfile,'Fatalerror:invalidinput!'2.2程序输入和建函数从用户那里得到数据输入的最容易的方法是使用raw_input()内建函数。它标准输入,并将到的数据赋值给指定的变量。你可以使用int()内建函数将用户输入的字符串转换>>>user=raw_input('Enterloginname:')Enterloginname:root>>>print'Yourloginis:',userYourloginis:root>>>num=raw_input('Nowenteranumber:')Nowenteranumber:1024>>>print'Doublingyournumber:%d'%(int(num)*Doublingyournumber:笔记:从交互式解释器中获在学习Python的过程如果需要得到一个生疏函数的帮只需要对它调用内建函help()。通过用函数名作为help()的参数就能得到相应的帮助信息>>>Helponbuilt-infunctionraw_inputinmodulebuiltinraw_input([prompt])->stringCtrl+D,Windows:Ctrl+Z+回车),则EOFError,在Unix平台,只要可用,就使用GNU(上面一行是help(raw_input)的输出,译文是对其加以解释——译者注printraw_input()内输出就是函数的目的,那么在函数体内使用print语句也是可以接受的选择。注>>>#one...printoWorld!' #anothercommentoWorld!起到文档的功能,这是Java程序员非常熟悉的一个特性。defreturnTrue运算 (数字)学到有关传统除法、真正的除法及浮点除法的知识还有一个乘方运算符,双星号(**)。尽管强调这些运算符的算术本质,但是请>>>print-2*4+3**就象你看到的,运算符的优先级和你一样:+和-优先级最低,*,/,//,%是(-2*4),然后是对两个结果进行求和。<<=>>===!=>>>2<>>>2==>>>2>>>>6>>>>>>格。目前后者慢慢地被淘汰了,所以我们推荐使用前者。 >>>2<4and2==>>>2>4or2<>>>not6.2<=>>>3<4<Python支持这样的表达式,既简洁又优>>>3<4and4<风格:合理使用括号增强代码的可读性,在很多场合使用括号都是一个好主意,而没Python语言中不是必须存在的,不过为了可读性,使用括号总是值得的。任何你代码的人会感谢你,在你再次阅读自己的代码时,你也会感谢你自己。变量和赋PythonC(或者说这门语言本或小写字母,另外还包括下划线(_).其它的字符可以是数字,字母,或下划线。Python变量名是大小写敏感的,也就是说变量"cAsE"与"CaSe"是两个不同的变量。>>>counter=>>>=>>>name=>>>print'%fisthesameas%fkm'%,kilometers)1000.000000isthesameas1609.000000kmn=n*n*=PythonC11Python会将--n解释为-(-n)从而得到n,同样++n的结果也是数intlongboolfloatPythonPythonPython与C语言的长整数Python的长整数所能表达的范围远远超过C语言的长整数,事实上,PythonJava,Python于Java中的BigInteger类型。从长远来看,Python2.3整型溢出错误,结果会自动的被转换为长整数。在未来版本的Python中,两种整数类型将会无缝结合,长整数后缀“L”也会变得可有可无。TrueFalse个数值上下文环境中(True),True1,False0(包括-1)在其它语言中通常不被直接其实还有第六种数字类型,decimal,用于十进制浮点数。不过它并不是内建类型,你必须先导入decimal模块才可以使用这种数值类型。由于需求日渐强烈,Python2.4了这种类型。举例来说,1.1无法用二进制浮点数精确表示。因此,数字1.1实际上会被表示成:>>>>>>printdecimal.Decimal('1.1')字符三引号(三个连续的单引号或者双引号)0,最后一个字符的索引是-1*>>>pystr=>>>iscool='is>>>pystr[0]>>>pystr[2:5]>>>iscool[:2]>>>iscool[3:]>>>iscool[-1]>>>pystr+iscool'Pythoniscool!'>>>pystr+''+iscool'Pythoniscool!'>>>pystr*2>>>'-'* >>>pystr=...is>>>pystr'python\niscool'is列表和元可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的Python对象。和数组一样,通过从0开始的数字索引元素,但是列表和元组可以不同类型的对象。列表和元组有几处重要的区别。列表元素用中括号([])包裹,元素的个数及元素的值可>>>aList=[1,2,3,>>>aList[1,2,3,>>>aList[0]>>>aList[2:][3,4]>>>aList[:3][1,2,3]>>>aList[1]=>>>aList[1,5,3,4]元组也可以进行切片运算,得到的结果也是元组(不能被修改>>>aTuple=('robots',77,93,>>>('robots',77,93,>>>aTuple[:3]('robots',77,93)>>>aTuple[1]=5Traceback(innermostlast):File"<stdin>",line1,inTypeError:objectdoesn'tsupportitem字>>>aDict={'host':'earth'}#create>>>aDict['port']=80#addto>>>{'host':'earth','port':>>>aDict.keys()['host',>>>aDict['host']>>>forkeyin...printkey,port80代码块及缩进对(不用大括号?到底成不成啊?)pythonif语if0True,if_suiteifx<print'”x”mustbeatleastPythonelseifPythonelif(“else-if”)ifelifexpression2:Python物”。这个例子似乎有点奇怪、让人觉得困惑,但是因为有了Python干净的语法,if-elif-else语句并不象别人说的那么(以致不能让人接受)。如果你非要避免写一堆if-elif-elsefor(2.13)来迭代你可能的在第8章你可以学到有关if,elif,else条件语句的知识while循whilewhile_suite0False;>>>counter=>>>whilecounter<...print'loop#%d'%...counter+=1loop#0looploopforrange()内建>>>print'IliketousetheInternetfor:'IliketousetheInternetfor:>>>foritemin['e-mail','net-surfing',',...printe-符。只要在print语句的最后添加一个逗号(,),就可以改变它这种行为。foritemin['e-mail','net-surfing',',print否则,提示信息就会立刻出现在我们的输出之后。下面是以上代码的输出:IliketousetheInternete-mailnet-surfing为了输出清晰美观,带逗号的print语句输出的元间会自动添加一个空格。通过指定输出格式,程序员可以最大程度的控制输出布局,也不用担心这些自动添加的空格。它也可以>>>who=>>>what=WearetheknightswhosayNi!Ni!Ni!Ni!>>>print'Wearethe%swhosay%s'% (who,((what+'')*通过演示一个让Pythonfor循环更象传统循环(换言之,计数循环)的示例,我们来结束对循环的介绍。因为我们不能改变for循环的行为(迭代一个序列),我们可以生成一>>>foreachNumin[0,1, print12能满足我们的需要,接受一个数值范围,生成一个列表。>>>foreachNumin print012>>>foo=>>>forcin printa>>>foo=>>>foriin...printfoo[i],'(%d)'%abc函数的推出(Python2.3)>>>fori,chin...printch,'(%d)'%abc 列表解>>>squared=[x**2forxin>>>foriin149>>>sqdEvens=[x**2forxinrange(8)ifnotx%>>>foriin4文件和内建函数open()、在你已经习惯一门语言的语法之后,文件是相当重要的一环。在一些工作做完之后,将它保存到持久是很重要的。如何打开handle=open(file_name,access_mode=file_name变量包含我们希望打开的文件的字符串名字,access_mode中'r'表示,'w'表示写入,'a'表示添加。其它可能用到的标声还有'+'表示读写,'b'表示二进制访access_moder'open()以它的一些方法,比如readlines()和close().文件对象的方法属性也必须通过句点属性标识法(参阅下面的笔记)笔记:什么是属和方法。哪些对象拥有属性呢?很多。类,模块,文件还有复数等等对象都拥有属性。我如何对象属性?使用句点属性标识法。也就是说在对象名和属性名之间加一个句点:object.attributefilename=raw_input('Enterfilename:')fobj=open(filename,'r')foreachLinein然后关闭文件,再迭代每一行输出。这样写代码的好处是能够快速完整的文件。内容输出和文件不必交替进行。这样代码更清晰,而且将不相关的任务区分开来。需要注意的一点是文件的大小。上面的代码适用于文件大小适中的文件。对于很大的文件来说,上面的代码会占用太多的内存,这时你最好一次读一行。(下一节有一个好例子)printprintfile()Pythonopen(),file()这个名字可以更确切的表明它是一个工厂函数。(生成文件对象)int()生成整数对象,本地文件系统。请参考第9了解详细信息。错误和异Python解释器就一个异常,并显示异常的详细信息。程序员可以根据这些信息迅速定位问题并进行调试,并找出处理错误的办法。exceptfilename=raw_input('Enterfilename:')fobj=open(filename,'r')foreachLineinprinteachLine,fobj.close()exceptIOError,e:print'fileopenerror:',函果函数中没有return语句,就会自动返回None对象。只有可变对象会受此影响,对不可变对象来说,它的行为类似按值调用。如何定义def"optionalationstring"定义一个函数的语法由def关键字及紧随其后的函数名再加上该函数需要的几个参数组成。函数参数(arguments的原因。(在你的代码里千万别写上中括号!)这个语句由一个冒号(:)结束(与if和while语句的结束方式一样),之后是代表函数体的代码组,下面是一个简短的例子:def'apply+operationtoargument'return(x+x)这个函数,干的是“在我的值 ”的活。它接受一个对象,将它的值加到自身,>>>addMe2Me(4.25)>>>addMe2Me(10)>>>addMe2Me('Python')>>>addMe2Me([-1,[-1,'abc',-1,默认参函数的参数可以有一个默认值,如果提供有默认值,在函数定义中,参数以赋值语句的>>>def...'determineifindebugmodewithdefault...if...print>>>>>>foo(False)debug自动拿到一个值,True.在第二次调用foo()时,我们故意传递一个参数False给类Python(与Java不同),此刻你也可以不学习类。不过我们还是在这儿放了些例子,以方便感的读者浏览。如何定义classClassName(base_class[es]):"optionalationstring"就使用object作为基类。class行之后是可选的文档字符串,静态成员定义,及方法定义。class"""myveryfirstclass:FooClass"""version=0.1#class(data)attributedefinit(self,nm='JohnDoe'):=nm#classinstance(data)attributeprint'Createdaclassinstancefor',nmdef"""diyinstanceattributeandclassname"""print'Yournameis',print'Mynameis',defshowver(self):"""diyclass(static)printself.version #referencesFooClass.versiondefaddMe2Me(self,x):#doesnotuse'self'"""apply+operationtoargument"""returnx+version,init(),showname(),showver(),addMe2Me().show*()方法并没有做什么有用的事情,仅仅输出对应的信息。init()方法有一个特殊名字,所有名字开始和 ()方自动执行,在类实例创建完毕后执行,类似构建函数。init()可以被当成构建函数,不过不象其它语言中的构建函数,它并不创 ()方法,你可以覆盖默认的 类实例属性(或者说成员)。这个变量仅在类实例中存在,它并不是实际类本身的一部分。init()需要一个默认的参数,前一节中曾经介绍过。,你也注意到每个方法都有的一个参数,self.什么是self?它是类实例自身的。其他语言通常使用一个名为this >>>foo1=CreatedaclassinstanceforJohn屏幕上显示的字符串正是自动调用init ()就会被自动调用。不管这 >>>foo1.showname()YournameisJohnMyname
main>>>foo1.showver()>>>printfoo1.addMe2Me(5)我们显示self.class 变量的值。对一个实例来说,这个变量表示实例化它的类的名字。(self.class实际的类)。在我们的例子里,创建类实例时我们并未传递名字参数,因此默认参数'JohnDoe'就被自动使用。在我们下一个例子里,指定一>>>foo2=FooClass('JaneSmith')CreatedaclassinstanceforJane>>>foo2.showname()MynameisFooClass模模块可以包含可执行代码,函数和类或者这些东西的组合。Python.py建之后,你可以从另一个模块中使用import语句导入这个模块来使用。如何导入import如何一个模块函数或一个模块变一旦导入完成,一个模块的属性(函数和变量)可以通过熟悉的.句点属性标识法现在我们再次提供oWorld!例子,不过这次使用sys模块中的输出函数>>>import>>>sys.stdout.write(oWorld!\n')oWorld!>>>systform>>>'2.4.2(#67,Sep282005,10:51:12)[MSCv.131032bit 这些代码的输出与我们使用print语句完全相同。唯一的区别在于这次调用了标准输出的write(不同于printwrite()关于模块和导入,你可以在第12章中得到有用的信息。在那里会详细介绍本章上面所有提到的,希望我们提供的快速能达到你迅速使用Python开始工作的目标。笔记:什么是在本书中你会经常看到PEP这个字眼。一个PEP就是一个Python增强提案(PythonEnhancementProposal也是在Python增加新特性的方式。初学者的角度看,它们是一些高级读物,它们不但提供了新特性的完整描述,还有添加这些新特性的理由,如果需要的话会提供新的语法、术实现细节、向后兼容信息等等。在一个新特性被整合进Python之前,必须通过Python开发社区,PEP作者及实现者,还有Python创始人,Guido在PEP0中可以找到所有的PEP。PEP索引的是:. 实用的函2.1表2.1对新Python程序员有用的内建函数 数,则会进入交互式帮助。 open(fn,mode)以mode('r'=读,'w'=写)方式打开一个文件名为fn start,stop1;默认值为0,step默认值为1raw_input(strstr 练2–1.变量,print和字符串格式化运算符。启动交互式解释器。给一些变量赋值(字符串,数值等等)并通过输入变量名显示它们的值。再用print语句做同样的事。这二者有何区别?也尝试着使用字符串格式运算符%,多做几次,慢慢熟悉它。.P程序输出,阅读下面的Python1+2*4你认为这段会输出什么这段代码单独执行和在交互解释器中执行有何不同?试一下,然后写出结如何改进这个,以便它能和你想像的一样工作启动交互解释Python对两个数值(任意类型)进行加、减、乘、除运算。然后使用取余运算符来得到两个数相除的余数,最后使用乘方运算符求A数的B次方。 使用raw_input()函数得到用户输创建一段使用raw_input()内建函数从用户输入得到一个字符串,然后显示这本,你需要使用string.ato*()函数执行这种转换) 循环和数分别whilefor创建一个循
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三年级英语教学计划模板
- 体育教研工作计划模板汇编
- 初一上学期班主任工作计划024年
- 2025年社区关爱残疾人工作计划模板新编
- 学校档案管理年度工作计划范文
- 计划标段生产建议计划
- 初一学期的班级工作计划
- 《食品风险分析框架》课件
- 《骨科常规护理技术》课件
- 土地承包合同中粮食补贴协议备注书面书写
- 舞蹈演出编导排练合同模板
- 路灯安装工程项目实施重点、难点和解决方案
- 2024年产品技术秘密保护协议版B版
- 社会学概论-第一次形成性考核-国开(SC)-参考资料
- 南京审计大学《计量经济学》2021-2022学年第一学期期末试卷
- 【MOOC】线性代数-同济大学 中国大学慕课MOOC答案
- 大美劳动智慧树知到期末考试答案章节答案2024年江西财经大学
- 蒋诗萌小品《谁杀死了周日》台词完整版
- 劳动教育智慧树知到期末考试答案2024年
- 报价单(报价单模板)
- 刑事案件模拟法庭剧本完整版五篇
评论
0/150
提交评论