助考笔记2019112421:25:36 一、基本概念 静态语言:编译方式执行(如C语言); 脚本语言:解释方式执行(如Python语言); Python重要特点: 具有通用性; 语法简介; 生态高产; 具体特点: 平台无关; 强制可续; 支持中文; 格式多样; 类库便捷 例子: 斐波那契数列(F(n)F(n2)F(n1)),namp;gt;2) a,b0,1 whileaamp;lt;1000: print(a,end,) a,bb,ab 计算圆半径 r25 area3。1415rr print(area) print({:。2f}。format(area))两位小数 绘制五角星 fromturtleimport color(red,red) beginfill() foriinrange(5): fd(200) rt(144) endfill() done() 程序运行计时 importtime limit1010001000 starttime。perfcounter() whileTrue: limit1 iflimitamp;lt;0: break deltatime。perf。counter()start print(时间是:{}秒。format(delta)) 绘制七种圆圈 importturtle colors〔red,orange,yellow,green,blue,indigo,purple〕 foriinrange(7): ccolor〔i〕 turtle。color(c。c) turtle。beginfill() turtle。rt(3607) turtle。circle(50) turtle。endfill() turtle。done() 二、Python基本语法元素 缩进:表示程序的逻辑。指每行语句开始前的空白局域,用来表示Python程序之间的包含和层次关系。 变量:可以随时命名、赋值、使用。 命名:首字符不能是数字,中间不能出现空格,长度无限制。 保留字(keyword): andasassertbreakclasscontinue defdelelifelseexceptFalse finallyforfromglobalifimport inislambdaNonenonlocalnot orpassreturnTruetrywhile withyield 数字类型:整数、浮点数、复数 字符串:双引号与单引号作用相同 切片:〔N:M〕格式获取字符串的子串(从N到M但不包含M)。 赋值:amp;lt;变量amp;gt;amp;lt;表达式amp;gt;lt;!表达式gt;lt;!变量gt; 引用: importamp;lt;库名称amp;gt;lt;!库名称gt; amp;lt;库名称amp;gt;。amp;lt;函数名称amp;gt;()lt;!函数名称gt;lt;!库名称gt; input():amp;lt;变量amp;gt;input(amp;lt;提示性文字amp;gt;)lt;!提示性文字gt;lt;!变量gt; ainput(请输入:) amp;gt;请输入:X print(a) amp;gt;X eval():去掉字符串最外侧的引号。amp;lt;变量amp;gt;eval(amp;lt;字符串amp;gt;)lt;!字符串gt;lt;!变量gt; print(): 仅输出:print(‘amp;lt;字符串amp;gt;’);lt;!字符串gt; 仅输出一个或多个变量:print(‘amp;lt;变量1amp;gt;’,‘amp;lt;变量2amp;gt;’,,‘amp;lt;变量namp;gt;’);lt;!变量ngt;lt;!变量2gt;lt;!变量1gt; 混合:print(amp;lt;模板amp;gt;。format(‘amp;lt;变量1amp;gt;’,‘amp;lt;变量2amp;gt;’)。例:a,b3,66print(数字{}和数字{}的和是{}。format(a,b,ab))amp;gt;数字3和数字66的和是69lt;!变量2gt;lt;!变量1gt;lt;!模板gt; 默认会在最后增加一个换行,或用:print(‘amp;lt;内容amp;gt;’,end‘amp;lt;结尾amp;gt;’)lt;!结尾gt;lt;!内容gt; 实例解析倒背如流: sinput(请输入一段文本:) ilen(s)1 whileiamp;gt;0: print(s〔i〕,end) ii1 sinput(请输入一段文本:) i1 whileiamp;gt;1len(s): print(s〔i〕,end) ii1 三、基本数据类型 1。整数类型 种类引导符号描述十进制无二进制0b或0B由字符0和1组成,例:0b1010,0B1010八进制0o或0O由字符0到7组成,例:0o1010,0O1010十六进制0x或0X由字符0到9、a到f或A到F组成,例:0x1010,0X1010 不同进制的整数可以直接运算 2。浮点数类型 必须带有小数部分,小数可以是0。 科学计算法使用字母e或E作为幂的符号,以10为基数。 不确定尾数:两个浮点数运算,有一定概率在运算结果后增加一些不确定尾数 amp;gt;amp;gt;amp;gt;0。10。2 0。30000000004 round()函数:对字符串四舍五入。 round(1。2345,2)1。23 3。复数类型 基本单位元素j或J,lt;ahrefhttps:www。codecogs。comeqnedit。php?latextargetblankgt;lt;imgsrchttps:latex。codecogs。comgif。latex?titlejgt;lt;agt;,叫做虚数单位。 复数可以看作是二元有序实数对(a,b),表示abj,a是实数部分,b是虚数部分。 当b是1时,‘1’不能省略,即’1j’ 对于复数z,可以用z。real和z。imag分别获得它的实部和虚部 amp;gt;amp;gt;amp;gt;(1。23e45。67e4j)。real 12300。0 amp;gt;amp;gt;amp;gt;(1。23e45。67e4j)。imag 56700。0 amp;gt;amp;gt;amp;gt;1。23e45。67e4j。imag先获得5。67e4j的虚部,再与1。23e4进行求和计算 69000。0 4。运算操作符 操作符描述xy和xy差xy积xy商,产生结果为浮点数xy整数商,即:不大于x与y之商的最打整数xy商的余数,称为模运算x负值,即x(1)xx本身xyx的y次幂 基本规则: 整数和浮点数混合运算,输出结果是浮点数; 整数之间运算,产生结果类型与操作符相关,的结果是浮点数; 整数或浮点数与复数运算,输出结果是复数;例:amp;gt;amp;gt;amp;gt;101010101。0amp;gt;amp;gt;amp;gt;1010。03336。0amp;gt;amp;gt;amp;gt;1010。032。0amp;gt;amp;gt;amp;gt;10(11j)等价于(101)1j(91j) 所有二元运算操作符都可以与赋值符号()相连,形成增强赋值操作符(,等)。用‘op’表示运算操作符,增强赋值操作符的用法如下: xopy等价于xxopy,op与之间不用加空格 5。运算函数 函数描述abs(x)x的绝对值divmod(x,y)(xy,xy),输出为二元组形式(也称为元组类型)pow(x,y)或pow(x,y,z)xy或(xy)z,幂运算round(x)或round(x,d)对x四舍五入,保留d位小数max(a,b,c,d,)最大值min(a,b,c,d,)最小值 6。字符串类型及格式化 单行字符串可以由一对单引号或双引号作为边界表示 多行字符串可以由一对三单引号或三双引号作为边界表示 反斜杠字符()表示转义,即该字符与后面相邻的一个字符共同组成了新的含义。 :换行; :反斜杠 :制表符 的额外作用:续行 7。format() amp;lt;字符串amp;gt;。format(amp;lt;逗号分隔的参数amp;gt;)lt;!逗号分隔的参数gt;lt;!字符串gt; 若在字符串中直接输出大括号,使用{{}}表示{} {amp;lt;参数符号amp;gt;:amp;lt;格式控制标记amp;gt;}lt;!格式控制标记gt;lt;!参数符号gt; amp;lt;填充amp;gt;amp;lt;对齐amp;gt;amp;lt;宽度amp;gt;amp;lt;,(英文逗号)amp;gt;amp;lt;。精度amp;gt;amp;lt;类型amp;gt;用于填充的单个字符amp;lt;左对齐;amp;gt;右对齐;居中槽的设定输出宽度数字的千位分隔符,适用于整数和浮点数浮点数小数部分的精度或字符串的最大输出长度整数类型:b,c,d,o,x,X;浮点数类型:e,E,f,lt;!类型gt;lt;!。精度gt;lt;!,(英文逗号)gt;lt;!宽度gt;lt;!对齐gt;lt;!填充gt; 整数类型: b:二进制; c:对应的Unicode字符; d:十进制; o:八进制; x:小写十六进制; X:大写十六进制 浮点类型: e:对应的小写字母e的指数; E:对应的E的指数 f:标准浮点; :百分比 amp;gt;amp;gt;amp;gt;{:。2f}。format(3。14159)输出小数后2位 3。14 amp;gt;amp;gt;amp;gt;{:X}。format(1010)输出十六进制形式 3F2 amp;gt;amp;gt;amp;gt;{:。5}。format(这是一个很长的字符串)输出前5位 这是一个很 amp;gt;amp;gt;amp;gt;{:10}。format(PYTHON)居中并以填充 PYTHON 8。字符串操作符 操作符描述xy连接两个字符串x与yxn或nx复制n次字符串xxins如果x是s的字符串,返回True,否则False 9。字符串处理函数 函数描述len(x)返回x的长度,也可以返回其他组合数据类型的元素个数str(x)返回x的字符串形式chr(x)返回Unicode编码x对应的单字符ord(x)返回x表示的Unicod编码hex(x)返回整数x对应十六进制的小写形式字符串oct(x)返回整数x对应八进制的小写形式字符串 10。字符串处理方法 方法描述str。lower(x)返回str全部小写str。upper(x)返回str全部大写str。split(sepNone)返回由str根据sep被分割构成的列表,默认以空格分割str。count(sub)返回sub出现的次数str。replace(old,new)返回old被替换为new的strstr。center(width,fillchar)字符串居中函数,fillchar可选str。strip(chars)从str中去掉其左右chars中的字符str。join(iter)将iter变量的每一个元素后增加一个str 例: amp;gt;amp;gt;amp;gt;Pythonisanexcellentlanguage。。replace(a,) Pythonisnexcellentlnguge。 amp;gt;amp;gt;amp;gt;Python。center(20,) Python amp;gt;amp;gt;amp;gt;Python。center(2,) Python当width小于str长度,返回str amp;gt;amp;gt;amp;gt;Python。strip(n) Pytho amp;gt;amp;gt;amp;gt;,。join(12345) 1,2,3,4,5 11。类型判断和类型间转换 type(x):对x进行类型判断,适用于任何数据类型 neval(input(请输入一个数字:)) iftype(n)type(123): print(输入的是整数) eliftype(n)type(11。3): print(输入的是浮点数) else: print(无法判断) int(x):将x转为整数 float(x):将x转为浮点数 str(x):将x转为字符串 12。实例解析凯撒密码 见CEncode。pyCDecode。pyCCEncode。pyCCDecode。py Unicode范围: 6590:AZ 97122:az 0x4e000x9FA5:汉字 四、程序的控制结构 1。程序流程图 具体图省略 描述一个计算问题的程序过程有多种方式:IPO、流程图、伪代码和程序代码。 2。程序控制结构 三种基本结构: 顺序结构:按照线性顺序依次执行; 分支结构:根据条件判断结果而选择不同向前执行路径; 循环结构:根据条件判断结果向后执行的一种运行方式。 3。if A。单分支结构 ifamp;lt;条件amp;gt;:lt;!条件gt; amp;lt;语句块amp;gt;lt;!语句块gt; amp;lt;条件amp;gt;可一个或多个,用and与or连接多个条件。lt;!条件gt; B。二分支结构 ifamp;lt;条件amp;gt;:lt;!条件gt; amp;lt;语句块1amp;gt;lt;!语句块1gt; else: amp;lt;语句块2amp;gt;lt;!语句块2gt; 更简洁的表达方式:适合amp;lt;语句块1amp;gt;和amp;lt;语句块2amp;gt;都只包含简单表达式的情况。lt;!语句块2gt;lt;!语句块1gt; amp;lt;表达式1amp;gt;ifamp;lt;条件amp;gt;elseamp;lt;表达式2amp;gt;lt;!表达式2gt;lt;!条件gt;lt;!表达式1gt; seval(input(请输入一个整数:)) tokenifs30ands50else不 print(这个数字{}能够同时被3和5整除。。format(token)) C。多分支结构 ifamp;lt;条件1amp;gt;:lt;!条件1gt; amp;lt;语句1amp;gt;lt;!语句1gt; elifamp;lt;条件2amp;gt;:lt;!条件2gt; amp;lt;语句2amp;gt;lt;!语句2gt; 。。。 else: amp;lt;语句namp;gt;lt;!语句ngt; 按照多分支结构的代码顺序依次评估判断条件,寻找并执行第一个结果为True条件对应的语句块,然后跳过整个ifelifelse结构。(只有条件为False才会进入elif) scoreeval(input(输入成绩:)) ifscoreamp;gt;90: gradeA elifscoreamp;gt;80: gradeB elifscoreamp;gt;70: gradeC elifscoreamp;gt;60: gradeD else: gradeE print(对应的等级是:{}。format(grade)) 判断条件及组合:判断条件可以使用任何能够产生True或False的语句或函数 操作符数学符号含义amp;lt;amp;lt;小于amp;lt;leq小于等于amp;gt;geq大于等于amp;gt;amp;gt;大于等于!eq不等于lt;!leq小于等于gt; Python中,任何非零的数值、非空的数据类型都等价于True,反之可以可直接用作判断条件。 amp;gt;amp;gt;amp;gt;0False True amp;gt;amp;gt;amp;gt;True False not:否;and:与;or:或 4。for遍历循环 foramp;lt;循环变量amp;gt;inamp;lt;遍历结构amp;gt;:lt;!遍历结构gt;lt;!循环变量gt; amp;lt;语句amp;gt;lt;!语句gt; 遍历结构可以是字符串、文件、range()函数或组合数据类型等。 字符串: foramp;lt;循环变量amp;gt;inamp;lt;字符串amp;gt;:lt;!字符串gt;lt;!循环变量gt; amp;lt;语句块amp;gt;lt;!语句块gt; range()函数:可以制定语句块的循环次数。 foramp;lt;循环变量amp;gt;inrange(amp;lt;循环次数amp;gt;):lt;!循环次数gt;lt;!循环变量gt; amp;lt;语句块amp;gt;lt;!语句块gt; 扩展模式: foramp;lt;变量amp;gt;inamp;lt;结构amp;gt;:lt;!结构gt;lt;!变量gt; amp;lt;语句1amp;gt;lt;!语句1gt; else: amp;lt;语句2amp;gt;lt;!语句2gt; 当for循环正常结束后,程序会执行else语句。 5。while无限循环 whileamp;lt;条件amp;gt;:lt;!条件gt; amp;lt;语句块amp;gt;lt;!语句块gt; amp;lt;条件amp;gt;与if一样,结果为True或False。lt;!条件gt; 当判断条件为True,执行循环体语句,结束后再次判断条件;当False,循环终止,执行与while同级别缩进的后续语句。 else扩展: whileamp;lt;条件amp;gt;:lt;!条件gt; amp;lt;语句1amp;gt;lt;!语句1gt; else: amp;lt;语句2amp;gt;lt;!语句2gt; 6。breakcontinue break:用来跳出最内层for或while循环,脱离后从循环后的代码继续执行。 whileTrue: sinput(请输入名字(按Q退出):) ifsQ: break print(输入的是:,s) print(程序退出) continue:结束当前当次循环,跳出循环体下面尚未执行的语句,但不跳出整个循环。 forsinPYTHON: ifsY: continue print(s,end) 7。tryexcept Python用try和except进行异常处理。 try: amp;lt;语句1amp;gt;lt;!语句1gt; except: amp;lt;语句2amp;gt;lt;!语句2gt; 语句1是正常执行的程序内容,当执行这个语句发生异常时,则执行except后的语句2。 try: neval(input(请输入一个数字:)) print(输入数字的3次方的值为:,n3) except: print(输入错误,请输入一个数字!) 8。实例解析猜数字游戏 importrandom targetrandom。randint(1,1000) count0 whileTrue: guesseval(input(请输入一个猜测的整数(1至1000):)) countcount1 ifguessamp;gt;target: print(大了) elifguessamp;lt;target: print(小了) else: print(猜对了) break print(此轮的猜测次数是:,count) importrandom targetrandom。randint(1,1000) count0 whileTrue: try: guesseval(input(请输入一个猜测的整数(1至1000):)) except: print(输入有误,请重试。) continue countcount1 ifguessamp;gt;target: print(大了) elifguessamp;lt;target: print(小了) else: print(猜对了) break print(此轮的猜测次数是:,count) 五、函数和代码复用 1。函数的定义:def defamp;lt;函数名amp;gt;(amp;lt;参数列表amp;gt;):lt;!参数列表gt;lt;!函数名gt; amp;lt;函数体amp;gt;lt;!函数体gt; returnamp;lt;返回值列表amp;gt;lt;!返回值列表gt; deffact(n): s1 foriinrange(1,n1): si returns print(fact(100)) 使用步骤: 函数定义; 函数调用; 函数执行; 函数返回 2。函数的参数传递 (1)可选参数传递 defamp;lt;函数名amp;gt;(amp;lt;非可选参数amp;gt;,amp;lt;可选参数amp;gt;amp;lt;默认值amp;gt;):lt;!默认值gt;lt;!可选参数gt;lt;!非可选参数gt;lt;!函数名gt; amp;lt;函数体amp;gt;lt;!函数体gt; return amp;gt;amp;gt;amp;gt;defmultiply(x,y10): print(xy) amp;gt;amp;gt;amp;gt;mulitply(99)990:amp;gt;amp;gt;amp;gt;multiply(99,2)198: (2)参数名称传递 amp;gt;amp;gt;amp;gt;defmultiply(x,y10): print(xy) amp;gt;amp;gt;amp;gt;multiply(x99)990:amp;gt;amp;gt;amp;gt;multiply(y2,x99)198: 不需要保持参数传递的顺序,参数之间的顺序可以任意调整。 (3)函数的返回值 return语句用来结束函数并将程序返回到函数被调用的位置继续执行。 3。变量的作用域 (1)局部变量 在函数内部定义的变量,仅在函数内部有效,当函数退出时变量将不再存在。 amp;gt;amp;gt;amp;gt;defmul(x,y10): zxyz是局部变量 returnz amp;gt;amp;gt;amp;gt;smul(99,2) amp;gt;amp;gt;amp;gt;print(s)198:amp;gt;amp;gt;amp;gt;print(z) error:。。。 (2)全局变量 在函数之外定义的变量,在程序执行全过程有效。全局变量在函数内部使用时,需提前使用global声明。 amp;gt;amp;gt;amp;gt;n2n是全局变量 amp;gt;amp;gt;amp;gt;defmul(x,y10): globaln returnxyn amp;gt;amp;gt;amp;gt;smul(99,2) amp;gt;amp;gt;amp;gt;print(s)396:4。代码复用 好处: 避免相同功能代码在被调用处重复编写; 当更新函数功能时,所有被调用处的功能都被更新。 模块化设计:指通过函数的封装功能将程序划分为主程序、子程序和子程序间关系的表达。 模块化设计基本要求: 紧耦合:尽可能合理划分功能块,功能块内部耦合紧密; 松耦合:模块间关系尽可能简单,功能块之间耦合度低。 耦合性:指程序结构中各模块之间相互关联的程度,它取决于各模块间接口的复杂程度和调用方式。 紧耦合:模块或系统间关系紧密,存在较多或复杂的相互调用。缺点:更新一个模块可能导致其他模块变化,复用较困难。 松耦合:一般基于消息或协议实现,系统间交互简单。 5。实例解析软文的诗词风 略 六、组合数据类型 1。基本概念 能够表示多个数据的类型成为组合数据类型 集合类型:元素集合,元素之间无序,相同元素在集合中唯一存在; 序列类型:元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他; 映射类型:键值数据项的组合,每个元素是一个键值对,表示为(key,value)。 (1)集合类型 包含0个或多个数据的无序组合,用大括号表示,集合中的元素可以动态增加或删除。 元素类型只能是不可变数据类型:整数、浮点数、字符串。 使用集合类型能够过滤掉重复元素 amp;gt;amp;gt;amp;gt;T{1010,1010,12。3,1010,1010} amp;gt;amp;gt;amp;gt;print(T) {1010,1010,12。3} 操作符及运算描述ST返回一个新集合,包括在集合S中但不在集合T中的元素Samp;amp;T返回一个新集合,包括同时在集合S和T中的元素ST返回一个新集合,包括集合S和T中非共同元素ST返回一个新集合,包括集合S和T中所有元素 函数或方法描述S。add(x)如果数据项x不在集合S中,将x增加到SS。remove(x)如果x在集合S中,移除x;不在则产生KeyError异常S。clear()移除S中所有数据项len(S)返回集合S元素个数xinS如果x是S的元素,返回True;否则FalsexnotinS如果x不是S的元素,返回True;否则False set(x)函数将其他的组合数据类型变成集合类型,也可以生成空集合变量。 amp;gt;amp;gt;amp;gt;Sset(知之为知之不知为不知) amp;gt;amp;gt;amp;gt;S {不,为,之,知} amp;gt;amp;gt;amp;gt;foriinS: print(i,end) 不为之知 (2)序列类型 操作符描述xins如果x是s的元素,返回True,否则Falsexnotins如果x不是s的元素,返回True,否则Falsest连接s和tsn或ns将序列s复制n次s〔i〕索引,返回s的第i个元素s〔i:j〕切片,返回包含s第i到j个元素的子序列(不包含j)s〔i:j:k〕步骤切片,返回包含s第i到j个元素以k为步数的子序列len(s)s的元素个数(长度)min(s)s中的最小元素max(s)s中的最大元素s。index(x)s中第一次出现元素x的位置s。count(x)s中出现x的总次数 (3)映射类型 是序列类型的一种扩展,由用户来定义序号,即键,用其去索引具体的值。 2。列表类型 (1)定义 列表是包含0个或多个元组的有序序列,属于序列类型。 可进行元素的增加、删除、替换、查找。 没有长度限制,元素类型可以不同,不需要预定长度。 列表类型用中括号,也可以通过list()函数将集合或字符串类型转换成列表类型。 amp;gt;amp;gt;amp;gt;list(举个栗子) 〔举,个,栗,子〕 (2)索引 沿用序列类型的索引方式,即正向递增序号或反负递减序号,用中括号作为索引操作符,不得超过列表的元素范围,否则IndexError。 amp;gt;amp;gt;amp;gt;ls〔1010,1010,〔1010,1010〕,1010〕 amp;gt;amp;gt;amp;gt;ls〔3〕1010:amp;gt;amp;gt;amp;gt;ls〔2〕 〔1010,1010〕 可以用遍历循环进行操作 foramp;lt;循环变量amp;gt;inamp;lt;列表变量amp;gt;:lt;!列表变量gt;lt;!循环变量gt; amp;lt;语句块amp;gt;lt;!语句块gt; amp;gt;amp;gt;amp;gt;ls〔1010,1010,〔1010,1010〕,1010〕 amp;gt;amp;gt;amp;gt;foriinls: print(i2)2020:10101010 〔1010,1010,1010,1010〕2020: (3)切片 切片后的结果也是列表类型 amp;lt;列表或列表变量amp;gt;〔N:M〕lt;!列表或列表变量gt; 或 amp;lt;列表或列表变量amp;gt;〔N:M:K〕lt;!列表或列表变量gt; 在〔〕中表示区间需要用冒号(:),表示枚举使用英文逗号 一般要求N小于M,当N大于M时,返回空列表 3。列表类型的操作 (1)操作函数 函数描述len(ls)列表ls的元素个数(长度)min(ls)ls中的最小元素max(ls)ls中的最大元素list(x)将x转变成列表类型 (2)列表的操作方法 amp;lt;列表变量amp;gt;。amp;lt;方法名称amp;gt;(amp;lt;方法参数amp;gt;)lt;!方法参数gt;lt;!方法名称gt;lt;!列表变量gt; 方法描述ls。append(x)在ls最后增加xls。insert(i,x)在ls第i位置增加xls。clear()删除ls中所有元素ls。pop(i)将ls中第i项元素取出并从ls中删除ls。remove(x)将ls中出现的第一个x删除ls。reverse()ls中元素反转ls。copy()生成新列表,复制ls del 对列表元素或片段进行删除 amp;gt;amp;gt;amp;gt;ls〔1,2,3,4〕 amp;gt;amp;gt;amp;gt;dells〔1〕 amp;gt;amp;gt;amp;gt;ls 〔1,3,4〕 ls。copy()生成的新列表不受旧列表影响 amp;gt;amp;gt;amp;gt;ls〔1,2,3,4〕 amp;gt;amp;gt;amp;gt;lsnls。copy() amp;gt;amp;gt;amp;gt;ls。clear() amp;gt;amp;gt;amp;gt;print(lsn) 〔1,2,3,4〕 amp;gt;amp;gt;amp;gt;lt〔1,2,3,4〕 amp;gt;amp;gt;amp;gt;lslt amp;gt;amp;gt;amp;gt;lt。clear() amp;gt;amp;gt;amp;gt;print(ls) 〔〕 4。字典的索引 amp;lt;值amp;gt;amp;lt;字典变量amp;gt;〔amp;lt;键amp;gt;〕lt;!键gt;lt;!字典变量gt;lt;!值gt; amp;gt;amp;gt;amp;gt;d{20101:小明,20102:小红,20103:小白} amp;gt;amp;gt;amp;gt;print(d〔20102〕) 小红 大括号{}可以创建字典,索引和赋值可以增加元素。 amp;gt;amp;gt;amp;gt;t{} amp;gt;amp;gt;amp;gt;t〔20104:小新〕 amp;gt;amp;gt;amp;gt;print(t) {20104:小新} 字典是存储可变数量键值对的数据结构,键和值可以是任意数据类型。 5。字典的操作 (1)操作函数 函数描述len(d)字典d的元素个数(长度)min(d)字典d中键的最小值max(d)字典d中键的最大值dict()生成一个空字典 (2)操作方法 amp;lt;字典变量amp;gt;。amp;lt;方法名称amp;gt;(amp;lt;方法参数amp;gt;)lt;!方法参数gt;lt;!方法名称gt;lt;!字典变量gt; 方法描述d。keys()返回所有的键信息d。values()返回所有的值信息d。items()返回所有的键值对d。get(key,default)键存在则返回相应值,否则返回默认值d。pop(key,default)键存在则返回并删除值对,否则返回默认值d。popitem()随机从字典中去取出一个键值对,以元组(key,value)形式返回,并从字典中删除d。clear()删除所有的键值对 amp;gt;amp;gt;amp;gt;d{1:A,2:B,3:C} amp;gt;amp;gt;amp;gt;d。items() dictitems(〔(1,A),(2,B),(3,C)〕) amp;gt;amp;gt;amp;gt;d。get(4) amp;gt;amp;gt;amp;gt;d。get(4,不存在) 不存在 amp;gt;amp;gt;amp;gt;deld〔1〕 amp;gt;amp;gt;amp;gt;print(d) {2:B,3:C} amp;gt;amp;gt;amp;gt;1ind True amp;gt;amp;gt;amp;gt;4ind False amp;gt;amp;gt;amp;gt;forkind: print(Thekeyandvalueare{}and{}。format(k,d。get(k))) Thekeyandvalueare1andA Thekeyandvalueare2andB Thekeyandvalueare3andC 6。实例解析文本词频统计 CalHamlet。py defgetText(): txtopen(hamlet。txt,r)。read() txttxt。lower() forchin!amp;amp;(),。:;amp;lt;amp;gt;?〔〕{}:lt;!gt; txttxt。replace(ch,) returntxt hamletTxtgetText() wordshamletTxt。split() counts{} forwordinwords: counts〔word〕count。get(word,0)1 itemslist(counts。items()) items。sort(keylambdax:x〔1〕,reverseTrue) foriinrange(10): word,countitems〔i〕 print({0:amp;lt;10}{1:amp;gt;5}。format(word,count))lt;!10}{1:gt; 七、文件和数据格式化 1。文件的使用 两种类型:文本文件、二进制文件 存储在辅助存储器上的一组数据序列。 (1)文件的类型 文本文件:由单一特定编码的字符组成; 二进制文件:直接由比特0和比特1组成,没有统一的字符编码,文件内部数据的组织格式与文件用途有关。 (2)打开和关闭 文件的存储状态是默认状态,打开后变成占用状态,关闭后再次回到存储状态。 open()函数:打开一个文件,并返回一个操作这个文件的变量 amp;lt;变量名amp;gt;open(amp;lt;文件路径及文件名amp;gt;,amp;lt;打开模式amp;gt;)lt;!打开模式gt;lt;!文件路径及文件名gt;lt;!变量名gt; 打开模式含义‘r’只读,如果文件不存在返回异常FileNotFoundError,默认值‘w’覆盖写,文件不存在则创建,存在则完全覆盖原文件‘x’创建写,文件不存在则创建,存在则返回异常FileExistsError‘a’追加写,文件不存在则创建,存在则在源文件最后追加内容‘b’二进制文件模式‘t’文本文件模式,默认值‘’与rwxd一同使用,在原功能上增加读写功能 amp;lt;变量名amp;gt;。close()关闭文件,释放文件的使用授权。lt;!变量名gt; 表示路径时,使用或代替 (3)文件的读写 读取方法含义f。read(size1)从文件中读入整个文件内容。参数可选,读入前size长度的字符串或字节流f。readline(size1)从文件中读入一行内容。参数可选,读入该行前size长度的字符串或字节流f。readlines(hint1)从文件中读入所有行,以每行为元素形成一个列表。参数可选,读入hint行f。seek(offset)改变当前文件操作指针的位置。offset:0为文件开头;2为文件结尾 写入方法含义f。write(s)向文件写入一个字符串或字节流f。writelines(s)将一个元素为字符串的列表整体写入文件 f。write(s)写入字符串s,每次写入后,将会记录一个写入指针 fopen(d:c。txt,w) f。write(123) f。write(456) f。close() 要显式地使用进行分行 ls〔123,456,789〕 fopen(d:d。txt,w) f。writelinese(ls) f。close() 2。数据组织的维度 (1)一维数据 由对等关系的有序或无序数据构成,采用线性方式组织。 任何表现为序列或集合的内容都可以看作是一维数据。 (2)二维数据 也称表格数据,由关联系数构成,采用二维表格方式组成。 (3)高维数据 由键值对类型的数据组成,采用对象方式组织,可以多层嵌套。 3。一维数据处理 (1)表示 由于是线性结构,因此主要采用列表形式表示。 (2)存储 4种方法: 采用空格分隔元素:A12数据 采用逗号分隔元素:A,12,数据 采用续行分隔元素:A12数据 其他特殊符号分隔,如分号:A;12;数据 逗号分隔的存储格式为CSV格式(CommaSeparatedValues),它是一种通用的、相对简单的文件格式 ls〔北京,上海,广州〕 fopen(city。csv,w) f。write(,。join(ls)) f。close() (3)处理 首先需要从CSV文件读入一维数据,并将其表示为列表对象。 默认包含了一个换行符。采用。strip()去掉 fopen(city。csv,r) lsf。read()。strip()。split(,) f。close() print(ls) 4。二维数据的处理 (1)表示 二维数据可以采用二维列表来表示。 二维数据一般采用相同的数据类型存储 (2)存储 用csv文件存储 ls代表二维列表 fopen(cpi。csv,w) forrowinls: f。wrtie(,。join(row)) f。close() (3)处理 fopen(cpi。csv,r) ls〔〕 forlineinf: ls。append(line。strip()。split(,)) f。close() print(ls) 与一维列表不同,二维列表一般需要借助循环遍历实现对每个数据的处理 forrowinls: foriteminrow: 对第row行第item列元素进行处理 对二维数据进行格式化输出,打印成表格形状: 此出省去从CSV获得的ls forrowinls: line foriteminrow: line{:10}。format(item)横行制表符 print(line) 5。实例解析国家财政数据趋势演算 略 (1)zip()函数 用来获取两个组合数据类,并将它的元素交织返回 amp;gt;amp;gt;amp;gt;x〔1,2,3〕 amp;gt;amp;gt;amp;gt;y〔4,5,6〕 amp;gt;amp;gt;amp;gt;print(zip(x,y)) 〔(1,4),(2,5),(3,6)〕 (2)线性回归代码 hatybhatxa defmeans(data): returnsum(data)len(data) deflinearRegression(xlist,ylist): xmeans,ymeansmeans(xlist),means(ylist) bNumeratorlen(xlist)xmeansymeans bDenominatorlen(xlist)xmeans2 forx,yinzip(xlist,ylist): bNumeratorxy bDenominatorx2 bbNumeratorbDenominator aymeasbxmeans returna,b 八、Python计算生态 1。计算思维 程序设计是实践计算思维的重要手段 本质:抽象和自动化 算法(Algorithm):解决问题的清晰指令 2。程序设计方法论 (1)自顶向下设计:最重要是顶层设计 是一种开发复杂程序最具价值的设计理念和工具,设计过程自然且简单,自顶向下设计通过封装实现抽象,利用了模块化设计的思想。 见MatchAnalysis。py (2)自底向上执行 import开展单元测试: importamp;lt;源文件名称amp;gt;lt;!源文件名称gt; 3。计算生态 https:pypi。python。orgpypi 函数库并非都采用Python编写,很多采用C等语言编写的库可以通过简单的接口封装供Python程序调用。胶水语言。 Python第三方程序包: 库library; 模块module; 类class; 程序包package 4。实例解析Web页面元素提取 见getNGurl。py 九、Python标准库概览 1。turtle库概述 turtle是Python重要的标准库之一,它能够进行基本的图形绘制。概念诞生于1969年,成功应用于LOGO编程语言。 基本框架:一个龟在坐标系中爬行,其爬行轨迹形成了绘制图形。 刚开始时,位于正中央,前进方向为水平右方。 三种引用方式: importturtleturtle。amp;lt;函数名amp;gt;()lt;!函数名gt; fromturtleimportamp;lt;函数名amp;gt;()lt;!函数名gt; importturtleast(也可以是其他别名)t。amp;lt;函数名amp;gt;()lt;!函数名gt; 2。turtle库与基本绘图 (1)窗体函数:turtle。setup() turtle。setup(width,height,startx,starty) 作用:设置主窗体的大小和位置。 width:窗口宽度。整数:像素值;小数:窗口宽度与屏幕的比例。 height:窗口高度。 startx:窗口左侧与屏幕左侧的像素距离。None:水平中央。 starty:窗口顶部与屏幕顶部的像素距离。None:垂直中央。 (2)画笔状态函数 函数作用pendown()放下画笔penup()提起画笔,与pendown()配对使用pensize()设置画笔线条的粗细pencolor()设置颜色beginfill()填充前,调用endfill()填充结束filling()返回填充的状态,True为填充,False为未填充clear()清空当前窗口,但不改变当前画笔位置reset()清空并重置screensize()设置画布的长与宽showturtle()显示画笔的turtle形状hideturtle()隐藏画笔的turtle形状isvisible()如果turtle可见,则返回Truewrite(str,fontNone)输出font字体的str (3)画笔运动函数 函数作用forward()前进指定距离backward()后退指定距离right(angle)向右旋转angle角度left(angle)向左旋转angle角度goto(x,y)移动到(x,y)处setx()将当前x轴移动到指定位置sety()将当前y轴移动到指定位置setheading(angle)设置当前朝向为angle角度home()设置当前位置为原点,朝向东circle(radius,e)绘制一个半径r和角度e的园或弧形dot(r,color)绘制一个半径r和颜色的圆点undo()撤销画笔最后一个动作speed()设置绘制速度,参数为010 3。random库概述 用于产生各种分布的伪随机数序列。采用梅森旋转算法(Mersennetwiste)生成伪随机数序列,可用于除随机性要求更高的加密算法外大多数工程应用。 最基本函数:random。random(),它生成〔0。0,1。0〕之间的小数 4。random库与随机数应用 函数作用seed(aNone)初始化随机数种子,默认值为当前系统时间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(pop,k)从pop类型中随机选取k个元素,以列表类型返回 5。time库概述 Python提供的处理时间标准库。提供系统级精确计时器的计时功能,可以用来分析程序性能,也可以让程序暂停运行时间。 3方面主要功能: 时间处理:time。time()、time。gmtime()、time。localtime()、time。ctime() 时间格式化:time。mktime()、time。strftime()、time。strptime() 计时:time。sleep()、time。monotonic()、time。perfcounter() 函数作用time。time()获取当前的时间戳time。gmtime()获取当前时间戳对应的structtime对象time。localtime()获取当前时间戳对应的本地时间的structtime对象time。ctime()获取当前时间戳对应的易读字符串表示,内部会调用time。localtime()time。mktime()将srtucttime转换为时间戳time。strftime()时间格式化最有效的方法,几乎可以以任何通用格式输出时间time。strptime()提取字符串中的时间来生成structtime structtime元素 下标属性值0tmyear年份,整数1tmmon月份〔1,12〕2tmmday日期〔1,31〕3tmhour小时〔0,23〕4tmmin分钟〔0,59〕5tmsec秒〔0,61〕6tmwday星期〔0,6〕(0表示星期一)7tmyday该年第几天〔1,366〕8tmisdst是否夏令时,0否,1是,1未知 time。strftime(): time。strftime(amp;lt;参数amp;gt;,time)lt;!参数gt; 参数符号日期时间值范围Y年份00019999m月份0112B月名JanuaryDecemberb月名缩写Jan。Dec。d日期0131A星期MondaySundaya星期缩写Mon。Sun。H小时(24h)0023I12h0112p上下午AM,PMM分钟0059S秒0059 6。time库与程序计时 三要素: 程序开始结束时间 程序运行时间 程序各核心模块运行时间 time。sleep(t):推迟t秒执行 time。perfcounter():计时器,每次调用记录当前执行时间 见Counter。py 7。实例解析雪景艺术绘图 见SnowView。py 十、Python第三方库概览 1。获取和安装 (1)pip工具 是Python官方提供并维护的在线第三方库安装工具。 pipinstallamp;lt;库名amp;gt;lt;!库名gt; (2)自定义安装 一般适用于在pip中尚无登记或安装失败的第三方库 (3)文件安装 略 (4)pip工具使用 pipuninstallamp;lt;库名amp;gt;lt;!库名gt; piplist列出当前系统以安装的第三方库 pipshowamp;lt;库名amp;gt;列出某个以安装库的详细信息lt;!库名gt; pipdownloadamp;lt;库名amp;gt;下载第三方库的安装包,但不安装lt;!库名gt; pipsearchamp;lt;关键字amp;gt;联网搜索库名或摘要中的关键字lt;!关键字gt; 2。PyInstaller概述 将Python源文件(。py)打包,变成直接可运行的可执行文件。 3。PyInstaller与程序打包 PyInstalleramp;lt;程序文件名amp;gt;lt;!程序文件名gt; 生成dist和build文件夹。build是存储临时文件的目录。 注意问题: 文件路径中不能出现空格和英文句号(。) 源文件必须是UTF8编码 常用参数描述h,help查看帮助clean清理打包过程中的临时文件D,onedir默认值,生成dist目录F,onefile在dist文件夹中只生成独立的打包文件i,amp;lt;图标。icoamp;gt;指定打包程序使用的图标文件lt;!图标。icogt; 4。jieba库概述 重要的第三方中文分词函数库 原理:中文词库ightarrow内容X分词词库ightarrow图结构和动态规划ightarrow最大概率的词组 三模式: 精确模式:最精确地切开,适合文本分析; 全模式:把句子中所有可以成词的词语都扫描出来,但是不能解歧义; 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词 5。jieba库使用 函数作用lcut(s)精确模式,返回列表lcut(s,cutallTrue)全模式lcutforsearch(s)搜索模式addword(w)向词典中添加新词w 6。wordcloud库概述 关键词云层、关键词渲染 7。wordcloud库与可视化词云 参数功能fontpath指定字体文件的完整路径,默认Nonewidth生成图片宽度,默认400像素height生成图片高度,默认200像素mask词云形状,默认None,方形图minfontsize词云中最小的字体字号,默认4号fontstep字号步进间隔,默认1stopwords被排除词列表,排除词不再词云中显示backgroundcolor背景颜色,默认黑色maxwords词云中最大词数,默认200maxfontsize词云中最大的字体字号,默认None,根据高度自动调整 方法功能generate(text)生成词云tofile(filename)保存 图像词云: fromscipy。miscimportimread maskimread(。png) 8。实例解析《红楼梦》人物出场词云 见CalStoryOfStone。py与CalStoryOfStone2。py 十一、Python第三方库纵览 1。爬虫方向 自动进行HTTP访问并捕获HTML页面的程序。 (1)requests 简洁且简单 函数功能request()构建一个请求get()获取HTML网页的主要方法head()获取HTML网页头信息post()提交POST请求patch()提交局部修改请求delete()提交删除请求put()提交PUT请求 (2)scrapy 快速的、高层次的web获取框架 2。数据分析方向 (1)numpy 开源数值计算扩展第三方库,用于处理数据类型相同的多维数据(ndarray),数组。 (2)scipy 在numpy库的基础沈阳增加了众多的科学、数学以及工程计算中常用的库函数。包括统计、优化、整合、线性代数、傅里叶变换、信号分析、图像处理、常微分方程求解等众多模块。 (3)pandas 基于numpy扩展。为解决数据分析任务。 3。文本处理方向 (1)pdfminer 一个可以从PDF文档中提取各类信息的第三方库。 (2)openpyxl 一个处理Excel文档的Python第三方库。 (3)pythondocx 一个处理Word文档的第三方库。 (4)beautifulsoup4 用于解析和处理HTML和XML。 4。数据可视化方向 指根据数据特点将其展示为易于理解的图形的过程。 (1)matplotlib 主要进行二维图标数据展示,广泛用于科学计算的数据可视化。 (2)TVTK 专业可编程的三维可视化工具。 (3)mayavi 基于VTK开发,完全用Python编写。 5。用户图形界面方向 (1)PyQt5 最成熟的商业级GUI第三方库。 (2)wxPython (3)PyGTK 6。机器学习方向 (1)scikitlearn 一个简单且高效的数据挖掘和数据分析工具。 (2)TensorFlow Google基于DistBelief进行研发的第二代人工智能学习系统。 (3)Theano 为执行深度学习中大规模神经网络算法而设计,擅长处理多维数组。 7。Web开发方向 (1)Django 最流行的开源Web应用框架。 (2)Pyramid 相对小巧、快速、灵活的开源PythonWeb框架。 (3)Flask 轻量级Web应用框架。 8。游戏开发方向 (1)Pygame 在SDL库基础上进行封装的、面向游戏开发入门的Python第三方库。 (2)Panda3D 一个开源、跨平台的3D渲染和游戏开发库。 (3)cocos2d 一个构建2D游戏和图形界面交互式应用的框架。 9。更多 (1)PIL 在图像处理方面的重要第三方库。 图像归档:对图像进行批处理;生成图像预览;图像格式转换等。 图像处理:基本处理;像素处理;颜色处理等。 (2)SymPY 一个支持符号计算的第三方库。一个全功能的计算机代数系统。 (3)NLTK 自然语言处理第三方库。 语料处理、文本统计、内容理解、情感分析等多种应用。 (4)WeRoBot 一个微信公众号开发框架,也成为微信机器人框架。 (5)MyQR 一个能够产生基本二维码、艺术二维码和动态二维码的第三方库。 附录 常用Unicode编码表 名称范围基础汉字〔0x4e00,0x9fa5〕数字〔0x0030,0x0039〕小写字母〔0x0061,0x007a〕大写字母〔0x0041,0x005a〕箭头〔0x2190,0x21ff〕数字运算符〔0x2200,0x22ff〕封闭式字母数字〔0x2460,0x24ff〕制表符〔0x2500,0x257f〕方块元素〔0x2580,0x259f〕几何图形〔0x25A0,0x25ff〕一般标点符号〔0x2000,0x206f〕韩文〔0xAC00,0xD7A3〕货币〔0x20a0,0x20cf〕泰文〔0x0e00,0x07f〕中日韩符号〔0x3000,0x303f〕中日韩括号数字〔0x3200,0x32ff〕 转义字符 符号作用(在行尾时)续行符反斜杠符号’单引号双引号a响铃退格(Backspace)e转义空换行纵向制表符横向制表符回车换页