Python3入门邓笛2020年3月18日目录21Python概述2变量和内建数据类型3语句4函数5标准库模块6程序调试关于Python一种编程语言特性取自Perl和Java,以及来自C,C++,Scheme,Haskell,Smalltalk,Ada,Simula,…等语言的影响开源免费;可以获取源代码可以下载到你的系统中由GuidovanRossum编写名称源自MontyPython'sFlyingCircus…•第一版发布于Feb1991:0.9.0•当前版本:3.4、2.7•版本间的改变采用进化策略•向下不兼容问题很少–但是确实有…–最大的改变:由2.X到3.X3Python的特点脚本语言解释型语言–没有编译/链接阶段–写完即可运行–比C,C++要慢优雅的设计;“紧凑”设计目标–临时应用脚本–可重用的模块–大型系统面向对象–非常优秀的设计–当然你不一定要用到这点有用的错误提示信息自动内存处理不依赖于特定操作系统–在Unix与Windows上都可运行–即使对文件系统操作的代码也是不依赖于操作系统的大量的标准库大量的第三方组件与外部C代码整合4print(Helloworld!)Helloworld!2**101024j=0foriinrange(1,11,1):...j=j+i...print(j)55Python的安装5下载:版本:windows、linux、源码开发集成开发环境:IDLE(Python3.4GUI-32bit)命令行:Python3.4(commandline-32bit)手机:qpython范例Python语言构成6语法规则:注释#、缩进、“:”、单引号、双引号等数据类型:int、str、float等(python3里面这些都是类)语句:if、else、elif、while、def、import等函数:print()、range()、help()等对象:os、sys等忘记了语句,不会用?——help()函数不用了,要退出?——exit()函数目录71Python概述2变量和内建数据类型3语句4函数5标准库模块6程序调试变量和数据类型8a='Helloworld!'#赋值语句print(a)'Helloworld!'type(a)#表达式:在交互模式下输出值class'str'n=12print(n)12type(n)class'int'n=12.0type(n)class'float'•变量在它们被赋值的时候创建•无需声明•变量名是大小写敏感的:'val'和'Val'不一样!•变量的类型由Python决定•变量可以在任何时候重新赋值为任何其他类型任何其他值n='apa'print(n)'apa'type(n)class'str'数字number9•整数:120-129870X1A2–Class'int'–十六进制是以0X开头,数字范围为0-9和A-F•浮点数:12.031E1-1.54E-21–Class'float'–精度和范围与C语言的double型相同•复数:1+3J–Type'complex'数字表达式10•通常的数字表达式运算符:+,-,/,*,**,%,//•运算优先级和括号正常工作12+51712+5*222(12+5)*234a=12+5print(a)17b=12.4+a#'a'convertedtofloatautomaticallyb29.4print(b)#usesfunction'str'29.44+5.59.51+3.0**210.01+2j+3-4j(4-2j)逻辑表达式(布尔表达式)boolean11•'True'和'False'为预定义值;实际上是整数1和0•值0作为False,所有其他值是True•常见的布尔表达式运算符:not,and,orTrueorFalseTruenot((TrueandFalse)orTrue)FalseTrue*12120and10•比较运算符产生布尔值•比较运算符:,=,,=,==,!=1213True1213False12=12True12!=13True字符串string12•单引号和双引号都可用于字符串•生成一样的字符串值•字符串中的特殊符号:\nnewline,\ttab,others•三重引号用于大块的文本内容a='Helloworld!'b=Helloworld!a==bTruea=Oneline.\nAnotherline.print(a)Oneline.Anotherline.b=Oneline,anotherline.print(b)Oneline,anotherline.a=Per'slectureprint(a)Per'slecture字符串转换13•数据类型转换需要用到函数:'str','int','float'•函数'eval'将一个字符串解释为Python表达式a=58type(a)class'str'b=int(a)b58type(b)class'int'c=int('blah')#如果不合法的表达式出现会怎样?Traceback(mostrecentcalllast):Filepyshell#34,line1,in-toplevel-c=int('blah')ValueError:invalidliteralforint():blahf=float('1.2e-3')f#uses'repr'0.0012print((f)#uses'str'0.0012eval('23-12')11字符串运算符14a=Part1b=andpart2a+''+b#合并,添加字符串'Part1andpart2's=a*2#重复并合并字符串print(s)Part1Part1s[0]#指标:单个字符,偏移量为0'P's[0:4]#片段:部分字符串,从0到4的正左方'Part's[5:]#边界留出:一直到字符串的一端'1Part1's[6:-1]#负数代表指标计数从右边开始,结束点在-1的正左方'Part'len(s)#函数'len'获得字符串的长度12'p'ins#成员属性测试False'P'insTrue'Part'ins#子串测试True改变字符串:不行!15•Python中的字符串不可修改!•如果你真的要改变一个字符串:用旧的字符串片段生成一个新的s[0]='B'Traceback(mostrecentcalllast):Filepyshell#68,line1,in-toplevel-s[0]='B'TypeError:objectdoesn'tsupportitemassignments='B'+s[1:]s'Bart1Part1'•重新生成字符串可能要用到大量的计算机资源•如果你要生成许多新串,尝试字符串格式化•表(List)处理能让字符串处理更为有效字符串方法16字符串有一组内建(内嵌,built-in)方法没有方法可以改变原串!有几个方法可以生成新串s='astring,withstuff's.count('st')#有多少子串?2s.find('stu')#如果可以,给出子串的位置15three='3'three.isdigit()#是纯数字串吗?Truesupper=s.upper()#转为大写supper'ASTRING,WITHSTUFF's.rjust(30)#通过加空格来右对齐'astring,withstuff'“newlines\n\n\n”.strip()#一个实际的串也可以调用方法!'newlines's.replace('stuff','characters')#替换子串(全部出现过的子串)'astring,withcharacters's.replace('s','X',1)#只替换一次'aXtring,withstuff'字符串格式化17•当有多个项需要格式化的时候要用元组(Tuples)作为操作符•元组的长度必须匹配格式化项数•不能用表类型List!c='Python'n=11Thisisa%scoursewith%istudents.%(c,n)'ThisisaPythoncoursewith11students.'w=Number%iwon!%12#字符串格式化操作符%w'Number12won!'•字符串格式化操作符'%'•通常是生成新串的最佳方式•类似C语言的格式化:稍微要点技巧,但功能强大•多个字符串格式化代码–%s:string(usesfunction'str')–%r:string(usesfunction'repr')–%f,%e,%g:float字符串格式化18格式含义'd'带符号的十进制整数.'i'带符号的十进制整数.'o'带符号的八进制值.'u'过时的类型,等于'd'.'x'带符号的十六进制(小写).'X'带符号的十六进制(大写).'e'浮点数指数格式(小写).'E'浮点数指数格式(大写).'f'浮点数十进制格式.'F'浮点数十进制格式.'g'浮点数格式.如果指数小于-4就使用小写指数格式,否则使用十进制格式.'G'浮点数格式.如果指数小于-4就使用大写指数格式,否则使用十进制格式.'c'单个字符(接受整数获这个单个正常字符).'r'字符串(使用函数repr()转为任何python对象).'s'字符串(使用函数str()转为任何python对象).'%'转为%自己.表,列表List19有序的对象序列;排列异质的;可以包含任意类型的对象的混合r=[1,2.0,3,5]#表实例,不同的值r[1,2.0,3,5]type(r)class'list'r[1]#通过指标来访问;偏移量为02.0r[-1]#负的指标代表从尾部开始计数5r[1:3]#表的片段;给出新的表[2.0,3]w=r+[10,19]#合并表;给出另外的一个表w[1,2.0,3,5,10,19]r#原表不变;w和r不同[1,2.0,3,5]t=[0.0]*10#用重复生成一个初始向量t[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]表List操作20表是可变的,可以改变局部表是动态的,大小可变r=[1,2.0,3,5]r[3]='word'#通过指标访问改变一个元素(项)r[1,2.0,3,'word']r[0]=[9,8]#表可以嵌套r[[9,8],2.0,3,'word']r[0:3]=[1,2,5,6]#改变表的一个片段,可以改变表的长度r[1,2,5,6,'word']r[1:3]=[]#通过设置表的片段为空集来移除元素r[1,6,'word']len(r)#表的长度;项的个数36inr#成员属性测试Truer.index(6)#搜索并给出位置,如果没有的话……1表的方法,第1部分21•表有一组内建的方法•有些方法会从内部改变表r=[1,2.0,3,5]r.append('thing')#在表尾增加一个项r[1,2.0,3,5,'thing']r.append(['another','list'])#表被看作一个单