




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python基础学习笔记基于《Python语言程序设计基础(第2版)》第一部分初识Python语言第1章程序设计基本方法计算机的概念•计算机是根据指令操作数据的设备,具备功能性和可编程性两个基本特性。•计算机技术发展阶段:.第一阶段:1946-1981年,“计算机系统结构阶段”。.第二阶段:1982-2007年,“计算机网络和视窗阶段”。.第三阶段:2008年至今,“复杂信息系统阶段”。.第四阶段:月20年后某个时期开始,“人工智能阶段”。1.2程序设计语言程序设计语言概述机器语言:直接使用二进制代码表达指令,可被计算机硬件直接识别和执行。不同计算机结构的机器指令不同。汇编语言:使用助记符对应机器语言中的指令,可直接操作计算机硬件。不同计算机结构的汇编指令不同。机器语言和汇编语言都直接操作计算机硬件并基于此设计,统称“低级语言”。高级语言:用更接近自然语言的方式描述计算问题。代码只与编程语言有关,与计算机结构无关。编译和解释高级语言按执行方式可分为采用编译执行的静态语言和采用解释执行的脚本语言。•编译是将源代码转换成目标代码的过程。•解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。计算机编程•我学习PythOn的原因:.通过编程实现自动化,提高效率。.通过编程了解一个新的广阔世界。•学习一门编程语言(重点在于练习).掌握该语言的语法.结合问题设计程序结构.掌握解决问题的能力1.3Python语言概述Python语言的发展Python语言是一个语法简洁、跨平台、可扩展的开源通用脚本语言。Python语言诞生于1990年,创世人为Guido。2000年10月,Python2.0正式发布,2010年,Python2.x系列发布最后一版(2.7)。2008年12月,Python3.0正式发布,解释器内部采用完全面向对象的方式实现,代价是3.x系列版本无法向下兼容2.x系列的既有语法。Python2.x已经是遗产,Python3.x是这个语言的现在和未来。编写Heno程序Python语言的特点语法简洁可跨平台应用广泛支持中文强制可读:通过强制缩进体现语句间的逻辑关系提高了程序的可读性∙模式多样:语法层面同时支持面向过程和面向对象两种编程方式粘性扩展:通过接口和函数集成其他语言编写的代码开源理念库类丰富Python语言开发环境配置Python解释器IDLE开发环境交互式启动文件式启动Python语言集成开发环境 PyCharm程序的基本编写方法IPO程序编写方法每个程序都有统一的运算模式:输入数据、处理数据和输出数据。这种朴素的运算模式形成了基本的程序编写方法:IPO(Input,Process,Output)方法。IPO不仅是程序设计的基本方法,也是描述计算问题的方式。理解问题的计算部分使用计算机解决问题的6个步骤:.分析问题.划分边界.设计算法.编写程序.调试测试.升级维护第2章Python程序解析Python程序语法元素分析Python程序包括格式框架、注释、变量、表达式、分支语句、循环语句、函数等语法元素。程序的格式框架Python语言采用严格的“缩进”来表明程序的格式框架,缩进表达了所属关系在代码编写中缩进可通过Tab键实现,也可用多个空格实现,建议采用4个空格方式书写代码注释注释是辅助性文字,不被执行单行注释:以#开头,这是注释多行注释:以'''(3个单引号)开头和结尾这是注释这也是注释这还是注释命名命名是为变量关联标识符的过程,用于确保程序元素的唯一性标识符由字母、数字、下划线(和汉字)等字符及其组合构成标识符的首字符不能是数字,且中间不能出现空格标识符对大小写敏感保留字保留字(KeyWOrd)也被称为关键字,是被编程语言内部定义并保留使用的标识符•PythOn的标准库提供了一个keyword模块,可以输出当前版本的所有关键字:>>>importkeyword>>>ls=keyword.kwlist>>>ls>>>len(ls)33Python3有33个保留字TrueFalseNoneandasassertbreakclasscontinuedef11.del12.elif13.else14.except15.finally16.for17.from18.global19.if20.import21.in22.is23.lambda24.nonlocal25.not26.or27.pass28.raise29.return30.try31.while32.with33.yield字符串字符串(String)类型在程序中表示文本字符串是字符的序列,可以按照单个字符或字符片段进行索引∙字符串包括两种序号体系:正向递增序号、反向递减序号正向递增序号:0~L-1反向递减序号:-L~-1区间访问方式:[N:M](不包含M),可以混合使用正向递增序号和反向递减序号字符串比较本质上是字符串对应Unicode编码的比较赋值语句PythOn语言中,“二”表示“赋值”,将右侧的计算结果赋给左侧变量同步赋值语句:可同时给多个变量赋值〈变量1》,…,<变量N>=<表达式1>,…,<表达式N>分支语句分支语句的作用是根据判断条件选择程序执行路径if<条件1>:〈语句块1》elif<条件2>:〈语句块2>■■■else:〈语句块N>循环语句•循环语句的作用是根据判断条件确定一段程序是否再执行一次或多次while(<条件>):〈语句块1>〈语句块2》foriinrange(〈循环次数》):〈语句块1>input()函数使用input()函数从控制台获得用户输入input()函数以字符串类型返回结果提示性文字请输入:eval()函数eval(<字符串>)函数的作用是间输入的字符串变成PythOn语句并执行请输入:Python语法允许在表达式内部标记之间增加空格,适当增加空格有助于提高代码可读性。但应注意,不能改变与缩进相关的空格数量、不能再变量名等命名中间增加空格。print()函数print()函数可以输出字符信息,也可以用字符的形式输出变量输出字符信息时,可以直接将待输出内容传递给print()函数输出变量值时,print()函数用槽格式和过format()方法将变量和字符串结合到一起输出函数函数可以理解为对一组表达特定功能表达式的封装,将特定功能代码编写在一个函数里,使程序模块化更好,便于阅读和复用可通过保留字def自定义函数2.2对象(库)的调用•<a>.<b>()表示调用一个对象<a>的方法<b>(),或调用一个函数库<a>中的函数<b>()面向对象编程是一种基于对象的编程范式。对象是事物的一种抽象,是一个实体,包含属性和方法两部分。属性是对象中的变量,方法是对象能完成的操作。•通过保留字import引用函数库import〈库名>:程序调用库中所有函数,使用库中函数格式如下〈库名>.<函数名>(<函数参数>)importturtleturtle.fd(100)■控制画笔向当前行进方向前进100from〈库名>import:from〈库名>import〈函数名,函数名,…,函数名>from〈库名>import*,"*”是通配符,表示所有函数调用库中函数不再需要使用库名,格式如下〈函数名>(<函数参数>)Ifromturtleimport*fd(100).3turtle库语法元素分析tuetle库是一个图形绘制函数图绘图坐标体系tuetle库绘制图形的基本框架是一个海龟在坐标系中爬行(前进、后退、左转、右转),其轨迹形成了绘制图形。初始位置位于坐标(0,0),行进方向为水平右方。使用turtle.setup()函数设置主窗体的大小和位置。turtle.Setup(Width,height,startx,stary)width,height分别表示窗口宽度和高度,值是整数表示像素值,值时小数表示与屏幕的比例StartX,stary分别表示窗口左侧和顶部与屏幕左侧和顶部的像素距离,如果值是none,窗口位于屏幕水平/垂直中央turtle.Setup(0.8,0.8)画笔控制函数turtle.penup():抬起画笔,之后移动画笔不绘制形状别名:turtle.pd()、turtle.down()turtle.pensize(width):设置画笔宽度,Width无参数或为None时返回当前画笔宽度别名:turtle.Width()turtle.pencolor():设置画笔颜色,无参数输入时返回当前画笔颜色。(colorstring)参数表示颜色的字符串;(r,g,b)参数表示颜色对应的RGB值颜色颜色字符串GRB十六进制黑色black0,0,0#FFFFFF颜色颜色字符串GRB十六进制白色white255,255,255#000000灰色grey190,190,190#BEBEBE形状绘制函数turtle.fd(distance):控制画笔向当前行进方向前进distance,值为负数表示向相反方向前进别名:turtle.forward(diStance)turtle.seth(to_angle):控制画笔绘制方向,(to_angle)参数是绝对方向角度值(turtle库的坐标体系以正东方向为绝对0度、正北方向为绝对90度)turtle.CirCle(radius,eXtent=None):根据半径radius绘制extent角度的弧形radius值为正时,半径在画笔左侧,值为负时,半径在画笔右侧;extent为正时,画笔逆时针前进,extent为负时,画笔顺时针倒退,extent不设置参数或参数为None时,绘制整圆。第二部分深入Python语言第3章基本数据类型数字类型Python语言提供整数、浮点数、复数3种数字类型整数类型整数类型共有4种进制表示:十进制、二进制、八进制和十六进制默认情况整数采用十进制,其他进制需要增加引导符号进制种类引导符号描述十进制无默认情况二进制0b或0B由字符0和1组成八进制0o或0O由字符0到7组成十六进制0x或0X由字符0到9、a到f、A到F组成浮点数类型浮点数类型与数学中实数的概念一致,表示带有小数的数值PythOn语言要求所有浮点数必须带有小数部分(可以是0),一区分浮点数和证书类型浮点数有2中表示方法:十进制表示和科学计数法表示科学计数法使用字母e或E作为幂的符号,以10为基数,含义如下:<a>e<b>=a*10b^2由于计算机内部采用二进制运算,浮点数进行超过15位数字计算会产生误差使用整数表达浮点数的方法是高精确度运算的基本方法之一。对于高精度科学计算外的绝大部分运算而言,浮点数类型已足够可靠,一般认为浮点数类型没有范围限制,运算结果准确复数类型复数类型表示数学中的复数复数可以看作是二元有序实数对(a,b),表示为a+bj,其中a是实数部分,简称实部,b是虚数部分,简称虚部。•Python语言中,复数的虚部通过后缀或表示1.23e-4+5.67e+89j•复数类型中实数部分和虚数部分的数值都是浮点数类型,对于实数z,可用z.real和z.imag分别获得它的实部和虚部(1.23e-4+5.67e+89j).real(1.23e-4+5.67e+89j).imag3.2数字类型的操作Python解释器为数字类型提供数值运算操作符、数值运算函数、类型转换函数等操作方法内置的数值运算操作符(共9个)操作符描述x+yX与y之和x-yX与y之差x*yX与y之积x/yX与y之商操作符描述x//yX与y之整数商,即不大于X与y之商的最大整数x%yX与y之商的余数,也称为模运算-xX的负值+xX本身x**yX的y次幂,即x^y操作符运算的结果可能会改变数字类型,3种数字类型之间存在一种逐渐扩展的关系:整数一浮点数一复数上述9个二元数学操作符都有与之对应的增强赋值操作符x+=y等价于x=x+y∙模运算(%)在编程中主要应用于具有周期规律的场景内置的数值运算函数(共6个)函数描述abs(x)x的绝对值divmod(x,y)(x//y,x%y),输出为二元组形式(也称为元组类型)pow(x,y[,z])(x**y)%z,[.∙∙]表示该参数可省略函数描述对X四舍五入,保留ndigits位小数,round(x)返回四舍五入round(XLndigitSl)的整数值max(x1,x2,…,xn)x1,x2,…,xn的最大值,n没有限定min(x1,x2,…,xn)x1,x2,…,xn的最小值,n没有限定内置的数字类型转换函数(共3个)函数描述int(x) 将X转换为整数,X可以是浮点数或字符串float(x) 将X转换为浮点数,X可以是整数或字符串complex(re[,im])生成一个复数,实部为re,虚部为im,re可以是整数、浮点数或字符串,im可以是整数或浮点数但不能为字符串•int()函数将浮点数类型转换为整数时,小数部分会直接被舍弃•复数不能直接转换为其他数字类型,可通过-eal和.imag将复数的实部和虚部分别转换3.3字符串类型及其操作字符串类型的表示•字符串是字符的序列表示•单引号字符串:’单引号表示可以使用双引号作为字符串的一部分‘•双引号字符串:双引号表示可以使用‘单引号'作为字符串的一部分三引号字符串:'''三引号表示可以使用双引号、'单引号'作为字符串的一部分也可以换行'''Python字符串提供区间访问方式,采用口/]格式。表示从字符串中从N到M(不包含M)的字符串,可以混合使用正向递增序号和反向递减序号反斜杠字符 在字符串中表示转义表示换行\表示反斜杠表示单引号"表示双引号表示制表符(Tab)基本的字符串操作符(共5个)操作符 描述x+y 连接两个字符串X与yx*n或n*x 复制n次字符串XXins 如果X是S的子字符串,返回Ture,否则返回Falsestr[i] 索引,返回第i个字符str[N:M] 切片,返回索引第N到第M个字符内置的字符串处理函数(共6个)函数 描述函数 描述len('x')返回字符串X的长度,也可返回其他组合数据类型元素个数str('x') 返回任意类型乂所对应的字符串形式Chr(X) 返回Unicode编码X对应的单字符ord('x') 返回单字符表示的Unicode编码hex(x) 返回整数X对应十六进制数的小写形式字符串oct(x) 返回整数X对应八进制数的小写形式字符串内置的字符串处理方法(共43个,常用16个)•在Python解释器内部,所有数据类型都采用面向对象的方式实现,封装为一个类•字符串是一个类,具有类似<a>.<b>()形式的字符串处理函数,称为方法str.lower()str.upper()str.islower()方法描述返回字符串Str的副本,全部字符小写返回字符串Str的副本,全部字符大写当Str所有字符都是小写时,返回Ture,否则返回Falsestr.isprintable()当Str所有字符都是可打印的,返回
Ture,否则返回FalSeI 方法描述str.isnumeric()当Str所有字符都是数字时,返回Ture,否则返回Falsestr.isspace()当Str所有字符都是空格,返回Ture,否则返回Flasestr.endswith(suffix[,start[,end]])str[start:end]以suffix结尾返回Ture,否则返回Flasestr.SrartSWith(prefix[,start[,end]])str[start:end]以prefix开始返回Ture,否则返回Flasestr.Split(Sep=None,maxsplit=-1)返回一个列表,由Str根据SeP被分割的部分构成str.count(sub[,start[,end]]返回str[start:end]中sub子串出现的次数str.replace(old,new[,count])返回字符串Str的副本,所有old子串被替换为new,如果count给出,则前count次old出现被替换str.center(width[,fillchar])字符串居中函数str.strip([chars])返回字符串Str的副本,在其左侧和右侧去掉chars中列出的字符str.zfill(width)返回字符串Str副本,长度为width。不足部分在其左侧添加0方法 描述str.format() 返回字符串Str的一种排版格式返回一个新字符串,由组合数据类型str.join(iterable) iterable变量的每个元素组成,元素间用Str分隔3.4字符串类型的格式化字符串通过format()方法进行格式化处理字符串格式化用于解决字符串和变量同时输出时的格式安排format()方法的基本使用字符串format()方法的基本使用格式:<字模板符串》.format(<逗号分隔的参数》)模板字符串由一系列槽组成,用来控制修改字符串中嵌入值出现的位置(槽用{}表示,如果{}中没有序号,则按照出现顺序替换)如需输入{},采用{{表示{;}}表示}圆周率{{{1}{2}}}是 无理数format()方法的格式控制format()方法模板字符串的槽除了包括参数序号,还可包括格式控制信息。槽内部样式:{〈参数序号>:<格式控制标记>}格式控制标记用于控制参数显示时的格式:〈填充〉〈对齐》〈宽度><,><.精度>〈类型》:〈填充〉〈对齐》〈宽度><,><.精度>〈类型》引导符号用于填〈左对齐、》右对齐、^居中对齐槽的设定输出宽度数字的千位分隔符浮点数小数部分的精度整数类型充的单适用于整或字符串的b,c,d,o,x,X;浮点个字符数和浮点数最大输出长度数类型e,E,f,%〈填充〉指宽度内除了参数外的字符采用什么方式表示,默认为空格〈对齐》指参数在宽度内输出时的对齐方式〈宽度》指当前槽的设定输出字符宽度,若实际参数长度比设定值大,则使用参数实际长度<,>用于显示数字类型的千分位分隔符<.精度>对于浮点数,表示小数部分输出的有效位数;对于字符串,表示输出的最大长度〈类型》表示输出整数好浮点数类型的格式规划。对于整数类型,b:整数的二进制;c:整数对应的Unicode字符;d:整数的十进制;o:整数的八进制x:整数的小写十六进制X:整数的大写十六进制对于浮点数类型,e:浮点数对应的小写字母e的指数形式E:浮点数对应的大写字母E的指数形式f:浮点数的标准浮点形式%:浮点数的百分形式第4章程序的控制结构程序的基本结构程序流程图起止框表示一个程序的开始和结束判断框判断一个条件是否成立,并根据判断结果不同选择不同的执行路径处理框表示一组处理过程输入/输出框表示数据输入或结果输出注释框增加程序的解释流向线以带箭头的直线或曲线形式指示程序的执行路径连接点将多个流程图连接到一起程序的基本结构程序有3种基本结构组成:顺序结构、分支结构和循环结构顺序结构:程序按照线性顺序依次执行分支结构:程序根据条件判断结果而选择不同向前执行路径的一种运行方式(分支结构包括单分支结构和二分支结构;p97)循环结构:程序根据条件判断结果向后反复执行(根据触发条件不同,循环结构包括条件循环和遍历循环)程序的分支结构单分支机构:if语句if语句语法格式:if〈条件>:〈语句块>•语句块是if条件满足后执行的一个或多个语句序列•语句块中语句通过与if所在行形成缩进表达包含关系if语句首先评估条件的结果值,若为Ture则执行语句块中的语句序列;若为False则跳过语句块中的语句if语句中条件部分可以使用任何能够产生Ture或False的语句或函数形成判断条件最常见的方式是采用关系操作符关系操作符数学符号操作符含义<<小于>>大于<=≤小于等于>=≥大于等于等于!二≠不等于PythOn使用表示赋值语句,使用 表示等于二分支结构:if-else语句if-else语句语法格式:else〈条件〉:〈语句块2>二分支语句用于区分条件的两种可能if条件满足时执行语句块1if条件不满足时执行语句块2二分支结构的简洁表达(适合通过判断返回特定值)〈表达式1>if〈条件>else〈表达式2〉表达式1/2一般是数字类型或字符串类型的一个值多分支结构:if-elif-else语句if-elif-else语句语法格式:Python依次评估寻找第一个结果为Ture的条件,执行该条件下的语句并跳过整个if-elif-else结构,执行后面的语句如果没有任何条件成立,执行else下面的语句块else语句是可选的4.3程序的循环结构遍历循环:for语句for语句语法格式Ifor〈循环变量>in〈遍历结构〉:〈语句块>•遍历循环可以理解为从遍历结构中中逐一提取元素,放在循环变量中,对于所提取的每个元素执行一次语句块循环N次:Iforiinrang(N):〈语句块>遍历文件的每一行:Iforlineinfi:〈语句块>遍历字符串SforCins:〈语句块>遍历列表lsforiteminls:〈语句块>遍历循环的扩展模式遍历循环:While语句while语句语法格式Iwhile〈条件>:〈语句块>•当条件判断为Ture时,循环体重复执行语句块中的语句;当条件为Flase时,循环终止,执行与while同级别缩进的后续语句无限循环的扩展模式•当While循环正常执行后,程序会继续执行else语句中的内容,else语句只在循环正常执行后才执行循环保留字:break和continuebreak用来跳出最内层for或While循环,脱离该循环后程序从循环代码后继续执行continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环•break语句与COntinUe语句的区别是,break语句结束整个循环过程,不再判断执行循环的条件是否成立;COntinUe语句只结束本次循环,而不终止整个循环的执行for循环和while循环中都有一个else扩展用法。else语句仅在循环正常遍历了所有内容或由于条件不成立而结束循环的条件下执行。4.4random库的使用random库采用梅森旋转算法生成伪随机数序列,可用于除随机性要求更高的加解密算法外的大多数工程应用PythOn内置的random库主要用于产生各种分布的伪随机数序列random库提供9个常用函数函数描述Seed(a=None)初始化随机数种子,默认值为当前系统时间random()生成一个[0.0,1.0]之间的随机小数randint(a,b)生成一个[a,b]之间的整数函数描述getrandbits(k)生成一个k比特长度的随机整数randrange(start,stop[,step])生成一个[start,stop]之间以step为步数的随机整数Uniform(a,b)生成一个[a,b]之间的随机小数choice(seq)从序列类型,例如列表中随机返回一个元素shuffle(seq)将序列类型中的元素随机排列,返回打乱后的序列sample(pok,k)从pop类型中随机选取k个元素,以列表类型返回•生成随机数之前可通过$66~()函数指定随机数种子,随机数种子一般是一个整数,只要种子相同,每次生成的随机数序列也相同4.5程序的异常处理Python通过try、except等保留字提供异常处理功能异常处理:try-except语句异常的高级用法第5章函数和代码复用函数的基本使用函数的定义函数是一段具有特定功能的、可重用的语句组使用函数主要有两个目的:降低编程难度和代码重用Python使用def保留字定义一个函数∙函数名可以是任何有效的Python标识符参数列表是调用该函数是传递给它的值,可以有零个(保留圆括号)、一个或多个(用逗号分隔)函数体是函数每次被调用是执行的代码当需要返回值时使用保留字return和返回值刘表,否则函数可以没有return语句,在函数体结束时将控制权返回给调用者函数调用和执行的一般形式函数的调用过程.调用程序在调用处暂停执行.在调用时将实参复制给形参.执行函数体语句.函数调用结束给出返回值,程序回到调用前的暂停处继续执行lambda函数Iambda函数又称匿名函数,将函数名作为函数结果返回〈函数名>=lambda<参数列表>:〈表达式>Iambda函数与正常函数一样,等价于下面表达式:•Iambda函数用于定义简单的、能够在一行内表示的函数,返回一个函数类型lambda函数用于需要函数对象的场景5.2函数的参数传递函数可定义可选参数,使用参数的位置或名称传递参数值,根据函数中变量的不同作用域有不同的函数返回值方式可选参数和可变数量参数函数定义时部分参数可直接为存在默认值的参数指定默认值,当函数被调用时如果没有传入对应的参数值则使用函数定义时的的默认值替代•默认参数必须指向不变对象函数定义时可设计可变数量参数,通过在参数前加星号(*)实现带有星号的可变参数只能出现在参数列表最后,调用时这些参数被单指元组类型传递到函数中参数的位置和名称传递∙函数定义时实参默认采用按照位置顺序的方式传递给函数,这种方式在参数很多的情况下可读性较差PythOn提供了按照形参名称输入实参的方式,调用函数时指定参数名称,参数之间的顺序可任意调整函数的返回值return语句用来退出函数并将程序返回到函数被调用的位置继续执行return语句可同时将0个、1个或多个函数运算后的结果返回给函数被调用的位置函数可以没有return,此时函数不返回值函数也可以用return返回多个值,多个值以元组类型保存deffunc(a,b):returnb,aPrint(S,type(s))(2,'t')<class'tuple'>5.4datetime库的使用PythOn时间处理的标准函数库datetime提供里一批显示日期和时间的格式化方法。datetime库概述datetime库可以从系统中获得时间,并以用户选择的格式输出•datetime库以格林威治时间为基础,每天由3600*24秒精准定义datetime库以类的方式提供多种日期和时间~@161加64@16:日期表示类,坑人表示年、月、日等。datetime.time:时间表示类,可表示小时、分钟、秒、毫秒等。~@161加64@161加6:日期和时间表示类,功能覆盖date和time类。datetime.timedelta:与时间间隔有关的类。datetime.tzinfo:与时区有关的信息表示类。datetime库解析㈠合土㊀切口㊀类)•datetime.datetime类的使用方式是首先创建一个datetime对象,然后通过对象的方法和属性显示时间创建datetime对象的3种方法:datetime.now():返回一个datetime类型,表示当前日期和时间,精确到毫秒>>>fromdatetimeimportdatetime>>>now=datetime.now()>>>nowdatetime.datetime(2018,5,13,16,49,38,627464)datetime.utcnow():返回一个datetime类型,表示当前日期和时间的UTC(世界标准时间)表示,精确到毫秒>>>fromdatetimeimportdatetime>>>utcnow=datetime.now()>>>utcnowdatetime.datetime(2018,5,13,8,53,59,788612)直接使用datetime()构造一个日期和时间对象:datetime(Y,M,D,hour=0,minute=0,second=0,microsecond=0)i>>>some=datetime(2018,5,13,17,0,0,0)>>>somedatetime.datetime(2018,5,13,17,0)-创建datetime对象后,可利用该对象的属性显示时间(以上述“some”为例)•datetime类的常用属性属性描述some.min固定返回datetime的最小时间对象,datetime(1,1,1,0,0)some.max固定返回datetime的最大时间对象,datetime(9999,12,31,23,59,59,999999)some.year返回some包含的年份some.month返回some包含的月份some.day返回some包含的日期some.hour返回some包含的小时some.minute返回some包含的分钟some.second返回some包含的秒钟some.microsecond返回some包含的毫秒•datetime类的常用时间格式化方法属性 描述some.isofomat() 采用ISO8601标准显示时间some.isoweekday() 根据日期计算星期some.Strftime() 根据格式化字符串format进行格式显示的方法•Strftime()方法用于输出特定格式时间格式化字符串对象取值范围%Y年0001~9999%m月1~12%B月名January~December%b月名缩写Jan~Dec%d日期01~31%A星期Monday~Sunday%a星期缩写Mon~Sum%H小时(24h制)00~23格式化字符串对象取值范围%I小时(12h制)01~12%p上、下午AM/PM%M分钟00~59%S秒00~59>>>some=datetime(2018,5,13,17,0,0,0)年%m月%d日,%H时%M分%S秒'2018年05月13日,17时00分00秒‛>>>print('今天是{0:%Y}年{0:%m}月{0:%d}日'.format(some))今天是2018年05月13日5.5代码复用和模块化设计当代编程语言从代码层面采用函数和对象两种抽象方式,分别对应面向过程和面向对象两种编程思想函数是程序的一种基本抽象方式,它将一系列代码组织起来通过命名提供其他程序使用,任何其他代码只有输入参数即可调用函数,更新函数功能时,所有被调用处的功能都被更新。对象是程序的一中高级抽象方式,它将程序代码组织为更高级的类。对象包括表征对象特征的属性和代表对象操作的方法。模块化设计值通过函数或对象的封装功能将程序划分成主程序、子程序和子程序间关系的表达。模块化设计的两个基本要求:.紧耦合:尽可能合理划分功能块,功能块内部耦合紧密.松耦合:模块间关系尽可能简单,功能块之间耦合度低.6函数的递归递归的定义:函数定义中调用函数自身的方式称为递归•数学经典递归案例——阶乘n!=n(n-1)(n-2)...(1)n!=1(n=0)n!=n(n-1)!(otherwise)•递归的两个关键特征.存在一个或多个基例,基例不需要再次递归,是确定的表达式.所有递归链要以一个或多个基例结尾递归的使用方法print(fact(abs(int(num))))•使用递归一定要注意基例的构建,否则递归无法返回科赫曲线绘制科赫曲线属于分形几何分支,它的绘制过程体现了递归思想fromturtleimport*defkoch(size,n):ifn==0:fd(size)else:foranglein[0,60,-120,60]:left(angle)koch(size/3,n-1)#递归defmain(size,level):Setup(600,600)#设置主窗体大小speed(0)#设置画笔速度,■♦O)hideturtle()#隐藏turtle箭头penup()goto(-150,50)PendoWn()pensize(1)#设置画笔尺寸koch(size,level)right(120)Python内置函数PythOn提供68个内置函数abs()all()any()asci()bin()bool()chr()Complex()dict()divmod()eval()float()hash()hex()id()input()int()len()list()max()min()oct()open()ord()pow()print()range()reversed()round()set()sorted()str()tuple()type()zip()bytes()delattr()bytearray()callable。Classmethod()compile()dir()exec()enumerate()filter()format()frozenset()getattr()globals()hasattr()help()isinstance()issubClass()iter()locals()map()memoryview()next()object()properyty()repr()setattr()slice()statiCmethod()sum()super()vars()_import()_第6章组合数据类型6.1组合数据类型概述组合数据类型为多个类型或不同类型数据提供单一表示,使数据操作更有序、更容易。组合数据类型分为序列类型、集合类型和映射类型3类。序列类型序列类型是一维元素向量,元素间存在先后关系,通过序号访问,元素之间不排他。1.字符串(Str)可以看做是单一字符的有序组合,属于序列类型•字符串被看做基本数据类型2.元组(tuple)是包含零个或多个数据项的不可变序列类型•一个元组可作另一个元组的元素,可采用多级索引获取信息>>>X=('a','b','c')■等同X='a','b','c'I>>>Y=(1,2,3,X)>>>Y[3][2],多级索引•Python中元组采用逗号和圆括号(可选)表示3.列表(list)是包含零个或多个对象引用的有序数列列表的长度和内容都是可变的列表用中括号([])表示,也可通过口$爪)函数将元组或字符串转化成列表列表必须通过显式赋值才能生成,简单将一个列表赋值给另一个列表不会生成新的列
表对象序列类型的通用操作符和函数操作符或函数 描述. 如果X是S的元素,返回True,XinS 否则返回FlaSeI 操作符或函数描述XnotinS如果X不是S的元素,返回True,否则返回FlaSes+t连接S和ts*n或n*s将序列s复制n次s[i]索引,返回序列s的第i个元素s[i:j]分片,返回包含序列S第i到第j(不含)个元素的子序列s[i:j:k]步骤分片,返回包含序列S第i到第j(含)个元素以k为步长的子序列len(S)序列s的元素个数(长度)min(s)序列S中的最小元素max(s)序列S中的最大元素s.index(x[,i[,j]])序列S中从i开始到j位置第一次出现元素X的位置s.count(x)序列S中出现X的总次数集合类型集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。集合的元素类型只能是固定数据类型(能够进行哈希运算的类型都可以作为集合元素)哈希运算可以将任意长度的二进制值映射为较短的固定长度的二进制值,哈希值是对数据
的一种有损且紧凑的表示形式,是数据在另一个数据维度的体现。集合是无序组合,没有索引和位置的概念,不能分片集合不包含重复元素,可使用集合类型过滤重复元素集合中元素可以动态增加或删除集合用大括号({})表示(直接使用大括号生成一个空的字典而不是集合)生成空集合需要使用函数set()集合类型的操作符(10个)描述差集:返回一个集合,包括在集合S中但不在集合T中的元素更新集合S,包括在集合S中但不在集合T中的元素交集:返回一个新集合,包括同时在集合S和T中的元素更新集合S,包括同时在集合S和T中的元素补集:返回一个新集合,包括集合S和T中的元素,但不包括同时在其中的元素更新集合S,包括集合S和T中的元素,但不包括同时在其中的元素并集:返回一个新集合,包括集合S和T中的所有元素操作
符S-TS-二TS&TS&=TS^TS=^Ts|t操作
符s=|tS<=TS>=T描述更新集合S,包括集合S和T中的所有元素判断S是否是T的真子集判断S是否是T的真超集集合类型的操作函数或方法(10个)操作函数或方法描述S.add.(x)如果数据项X不在集合S中,将X增加到SS.clear()移除S中的所有数据项S.copy返回集合S的一个副本S.pop()随机返回集合S中的一个元素,若S为空,产生KeyError异常S.discard(x)如果X在集合S中,则移除x;若不在也不报错S.remove(x)如果X在集合S中,则移除x;否则产生KeyError异常S.isdisjoint(T)如果集合S与T没有相同元素,则返回Truelen(S)返回集合S的元素个数操作函数或方法 描述XinS 如果X是S的元素,返回True,否则返回FalseXnotinS如果X不是S的元素,返回True,否则返回False映射类型映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key,value)。列表类型的操作列表类型特有的函数或方法(14个)I 函数或方法描述ls[i]=x替换列表ls第i个数据为Xls[i:j]=lt用列表lt替换列表ls中第i到第j(不含)项的数据ls[i:j:k]=lt用列表lt替换列表ls中第i到第j(不含)项以k为步数的数据dells[i:j]删除列表ls中第i到第j(不含)项的数据,等价于ls[i:j]=[]dells[i:j:k]删除列表ls中第i到第j(不含)项以k为步数的数据ls+=lt或ls.extend(lt)将列表lt的元素增加到列表ls中函数或方法描述ls*=n更新ls列表,使其元素重复n次ls.append(x)在列表ls最后增加一个元素Xls.clear()删除列表ls中的所有元素ls.copy()生成一个新列表,复制ls中的所有元素ls.insert(i,x)在列表ls的第i个位置增加元素Xls.pop(i)将列表ls中的元素取出并删除该元素ls.remove(x)将列表ls中出现的第一个X元素删除ls.reverse()将列表ls中的元素反转6.3实例:基本统计值计算frommathimport*defgetNum():,获取输入nums=[]iNumStr=input♦请输入数字(直接输入回车退出):')whileiNumStr!='':nums.append(eval(iNumStr))iNumStr=input('请输入数字(直接输入回车退出):')returnnums列表是一个动态长度的数据结构,可以跟需求增减元素列表的一系列方法或操作符为计算提供了简单的元素运算手段列表提供了对每个元素的简单访问方式及所有元素的遍历方式字典类型和操作字典是包含零个或多个键值对的集合,没有长度限制,可以根据减值索引内容字典类型的概念编程术语中,根据一个信息查找另一个信息的方式构成了“键值对”,它表示索引用的键和对应的值构成的成对关系通过任意键信息查找一组数据中值信息的过程叫映射PythOn语言中通过字典实现映射,字典通过大括号({})建立,键和值通过冒号(:)连接,不同键值对通过逗号(,)隔开{〈键1♦<值1>,<键2■〈值2>,...<键n>:<值n>}∙字典是集合的延续,各个元素没有顺序之分字典通过索引符号查找与特定键相对应的值<值>=<字典变量>[<键>]字典中对某个键值的修改可以通过中括号的访问和赋值实现字典类型的操作使用大括号创建字典并指定初始值使用中括号增加新的元素键和值可以是任何数据类型?采用固定数据类型的键数据作为索引字典类型的函数和方法函数和方法 描述<d>.keys()返回所有的键信息<d>.values()返回所有的值信息<d>.items()返回所有的键值对<d>.get(<key>,<defaulf>)键存在则返回相应值,否则返回默认值<d>.pop(<key>,<defaulf>)键存在则返回相应值,同时删除键值对,否则返回默认值<d>.Popitem()随机从字典中取出一个键值对,以元组(key,value)形式返回<d>.clear()删除所有的键值对del<d>[<key>]删除字典中某一个键值对<key>in<d>如果键在字典中则返回Ture,否则返回Falsejieba库的使用jieba库概述•提取英文文本中的单词,可使用字符串处理的split()方法•jieba库是Python中一个第三方中文分词函数库jieba库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组jieba库支持3种分词模式:精确模式、全模式、搜索引擎模式.精确模式:将句子最精确地切开,适合文本分析.全模式:把句子中所有可以成词的词语都扫描出来,速度快,但不能消除歧义.搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词jieba库解析•jieba库主要提供分词功能,可以辅助自定义分词词典jieba库常用的分词函数|函数|描述|| | ||jieba.cut(s)|精确模式,返回一个可迭代的数据类型||jieba.cut(s,cut_all=Ture)|全模式,输出文本S中所有可能的单词||jieba.cut_foJsearch(s)|搜索引擎模式,适合搜索引擎建立索引的分词结果||jieba.lcut(s)|精确模式,返回一个列表类型,建议使用||jieba.lcut(s,cut_all_=Ture)|全模式,返回一个列表类型,建议使用||jieba.lcut_foJsearch(s)|搜索引擎模式,返回一个列表类型,建议使用||jieba.add_word(w)|向分词词典中增加新词w|jieba.lcut()函数返回精确模式,输出的分词能够完整且不多余地组成原始文本jieba.lcut(,True)函数返回全模式,输出原始文本中可能产生的所有问题,冗余性最大jieba.lcut_foJsearch()函数返回搜索引擎模式,该模式首先执行精确模式,然后再对其中的长词进一步分切得出结果•无识别的分词,可通过jieba.add_word()函数向分词库中添加6.6文本词频统计词频统计只是累加问题,即对文档中每个词设计一个计数器,词语每出现一次,相关计数器加1.。如果以词语为键,计数器为值,构成〈单词〉:〈出现次数》的键值对,采用字典数据结构统计词语出现的频次,将很好第解决问题Hamlet英文词频统计.分解并提取英文文章的单词•①通过txt.lower()函数将字母变成小写•②通过txt.repla()方法将特殊字符替换为空格以统一单词分隔方式.对每个单词进行计数.对单词的统计值从高到低进行排序•①将字典类型转换为有顺序的列表类型•②使用sort()方法和Iambda函数配合实现根据单词出现的次数对元素进行排序4.采用集合类型构建一个排除词汇库(排除语法型词汇)excludes={'the','and','to','of','you','a','i','my','in','it',‘that','is','not','his',‘this','but','with'}#排除词汇库集合defgetText():txt=txt.lower()‘■~':将文本中特殊字符替换为空格returntxthamletTXt=getText()words=hamletTxt.split()Counts={}forwordinwords:Counts[word]=Counts.get(word,0)+1forwordinexcludes:del(counts[word])items=list(Counts.items())items.sort(key=lambdax:x[1],reverse=True)print(items)foriinrange(20):word,count=items[i]Print('{0:<10}{1:>5}'.format(word,count))《三国演义》人物出场统计中文文章需要分词才能进行词频统计,需要用到jieba库。importjieba将军却说二人不可不能如此商议如何主公军士左右军马引兵次日大喜天下于是东吴今日荆州不敢魏兵陛下人马不知都督一人汉中■与人名无关的词汇库集合三国演义words=jieba.lcut(txt)#jieba库分词6.7Python之禅TheZenofPython,byTimPetersBeautifulisbetterthanugly.Explicitisbetterthanimplicit.Simpleisbetterthancomplex.Complexisbetterthancomplicated.Flatisbetterthannested.Sparseisbetterthandense.Readabilitycounts.Specialcasesaren'tspecialenoughtobreaktherules.Althoughpracticalitybeatspurity.Errorsshouldneverpasssilently.Unlessexplicitlysilenced.Inthefaceofambiguity,refusethetemptationtoguess.Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.Althoughthatwaymaynotbeobviousatfirstunlessyou'reDutch.Nowisbetterthannever.Althoughneverisoftenbetterthan*right*now.Iftheimplementationishardtoexplain,it'sabadidea.Iftheimplementationiseasytoexplain,itmaybeagoodidea.Namespacesareonehonkinggreatidea--let'sdomoreofthose!OrnhgVshyVforggregunahtyl.RkCyVpVgvforggregunavzcyvpvg.FvzcyrVforggregunapbzcyrk.PbzcyrkVforggregunapbzcyvpngrq.SyngVforggregunaarfgrq.FcnefrVforggregunaqrafr.Ernqnovyvglpbhagf.Fcrpvnypnfrfnera'gfcrpvnyrabhtugboernxgurehyrf.Nygubhtucenpgvpnyvglorngfchevgl.Reebeffubhyqarirecnfffvyragyl.Hayrffrkcyvpvgylfvyraprq.Vagursnprbsnzovthvgl,ershfrgurgrzcgngvbagbthrff.Gurerfubhyqorbar--naqcersrenoylbaylbar--boivbhfjnlgbqbvg.Nygubhtugungjnlznlabgorboivbhfngsvefghayrfflbh'erQhgpu.Abjvforggregunaarire.Nygubhtuarirevfbsgraorggreguna*evtug*abj.VsgurVzcyrzragngvbavfuneqgbrkcynva,vg'fnonqvqrn.VsgurVzcyrzragngvbavfrnflgbrkcynva,vgZnlorntbbqvqrn.d={}forCin(65,97):#chr(65)~chr(97)为a~z、A~Zforiinrange(26):d[chr(i+c)]=chr((i+13)%26+c)#将循环编号增加了13,直接好处是原文和密文之间的相互转换可以使用同一个程序第7章文件和数据格式化文件的使用Python能够以文本和二进制两种方式处理文件概述文件是一个储存在辅助存储器上的数据序列,可以包含任何数据内容文件包括文本文件和二进制文件两种类型文本文件一般由单一特定编码的字符组成,可被看作是存储在磁盘上的长字符串二进制文件直接由比特0和比特1组成,由于没有统一字符编码,职能当做字节流无论是创建为文本文件还是二进制文件,都可以用“文本文件方式”和“二进制文件方式”打开,但打开后操作方式不同。采用文本方式读入文件,文件经过编码形成字符串,打印出有含义的字符采用二进制方式打开文件,文件被解析为字节流文件的打开关闭•PythOn通过解释器内置的open()函数打开一个文件,并实现该文件与一个程序变量的关联〈变量名>=open(<文件名>,<打开模式>)文件名可以是文件的实际名字,也可以是包含完整路径的名字打开模式用于控制使用何种方式打开文件,open()提供7种基本的打开模式文件的打开模式文件的打开模
式含义‘r’ 只读模式,如果文件不存在,返回异常FileNOtFoundError,默认值‘w’ 覆盖写模式,文件不存在则创建,存在则完全覆盖创建写模式,文件不存在则创建,存在则返回异常FileExistsError‘a’ 追加写模式,文件不存在则创建,存在则在文件最后追加内容‘b’ 二进制文件模式‘t’ 文本文件模式,默认值'+' 与r/w/x/a一同使用,在原功能基础上增加同时读写功能打开模式使用字符串方式表示文件使用结束后要用close()方法关闭,释放文件的使用授权〈变量名>.close()文件的读写•当文件以文本文件方式打开时,读写按照字符串方式,采用当前计算机使用的编码或
指定编码•当文件以二进制文件方式打开时,读写按照字节流方式文件内容读取方法含义读入整个文件内容,返回一个字符串或字节流从文件中读入整个文件内容,如果给出参数,读入前Size长度的字符串或字节流从文件中读入一行内容,如果给出参数,读入该行前Size长度的字符串或字节流从文件中读入所有行,以没行为元素形成一个列表,如
果给出参数,读入卜也弋行备注:返回字符串或字节流取决于文件打开模式操作方法<file>.readall()<file>.read(size=-1)<file>.readline(size=-1)<file>.readlines(hint=-1)文件内容写入方法方法含义<file>.write(S)向文件写入一个字符串或字节流<file>.writelines(lines)将一个元素全为字符串的列表写入文件<file>.seek(offset)改变当前文件操作指针的位置,offset的值:0——文件
开头;1——当前位置;2——文件结尾7.4一二维数据的格式化和处理数据组织的维度一维数据由对等关系的有序或无序数据构成,采用线性方式组织,对应数学中的数组和集合等概念无论采用任何方式分隔和表示,一维数据都具有线性特点二维数据也称表格数据,由关联关系数据构成,采用表格方式组织,对应数学中的矩阵高维数据由键值对类型的数据构成,采用对象方式组织,属于整合度更好的数据组织方式高维数据相比一维和二维数据能表达更加灵活和复杂的数据关系对于数据处理,需要考虑存储格式以及表示和读写两个问题一二维数据的存储格式一维数据是最简单的数据组织类型,常用空格、逗号以及其他符号或符号组合分隔•二维数据由多条一维数据构成,可以看做是一维数据的组合形式逗号分隔数值的存储格式叫做CSV(Comma-SeparatedValues,逗号分隔值)格式,它是一种通用的、相对简单的文件格式,尤其应用在程序之间转移表格数据CSV格式应用基本规则.纯文本格式,通过单一编码表示字符.以行为单位,开头不留空行,行之间没有空行.每行表示一个一维数据,多行表示二维数据.以逗号(英文,半角)分隔每列数据,数据列为空也要保留逗号.对于表格数据,可以包含或不包含列名,包含时列名放置在文件第一行一二维数据的表示和读写•CSV文件的每一行是一维数据,可以使用Python中的列表类型表示•整个CSV文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表1.csv:列1,列2,列3,列4,列51,1,1,1,12,2,2,2,23,3,3,3,34,4,4,4,45,5,5,5,5导入CSV格式数据到列表fo=open('1.csv','r')ls=[]forlineinfo:line=line.replace('','')ls.append(line.split(','))#以split(',')方法从CSV文件中获得内容时,每行最后一个元素后面包含了一个换行符C '),应去掉。print(ls)fo.close()>>>[♦列1','列2','列3','列4','列5'],[T,'1','1','1',T],['2','2','2','2','2'],['3','3','3','3','3'],['4','4','4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年10月浙江义乌市属国有企业公开招聘72人笔试参考题库附带答案详解
- 《发现潜藏的逻辑谬误》教学设计 2024-2025新统编版选择性必修上册
- 环境保护知识试题库及参考答案
- 2024四川长虹空调有限公司招聘费用管理岗位测试笔试参考题库附带答案详解
- Module7 Unit 1 Did you take Amys doll?(教学设计)-2024-2025学年外研版(一起)英语四年级上册
- 22 文言文二则 教学设计-2024-2025学年统编版语文六年级上册
- 2024中国铁路国际有限公司招聘11人笔试参考题库附带答案详解
- 高中信息技术选修5教学设计-1.2.4 机器学习1-教科版
- 2025年工程瑞雷波仪项目合作计划书
- 2025年水基聚合物防水涂料合作协议书
- 中国脓毒症及脓毒性休克急诊治疗指南
- 部编版六年级道德与法治下册《学会反思》教案
- 人教版体育与健康四年级-《障碍跑》教学设计
- DB32-T 2860-2015散装液体化学品槽车装卸安全作业规范-(高清现行)
- 部编版四年级下册语文教案(完整)
- T∕CIS 71001-2021 化工安全仪表系统安全要求规格书编制导则
- 福利院装修改造工程施工组织设计(225页)
- 部编版六年级下册语文课后词语表(拼音)
- 环境空气中臭氧的测定
- 第七章 化学物质与酶的相互作用
- 机械毕业设计论文钢筋自动折弯机的结构设计全套图纸
评论
0/150
提交评论