导图社区 Python知识点
编程新手建议收藏!关于《Python语言程序设计基础》知识点的整理总结来啦!列表和数组的区别、程序的三种基本结构、运行Python程序的两种方式等内容全部都浓缩在下图之中,值得一看!
编辑于2019-05-31 04:18:13暂无相关模板推荐
Python知识点
第一章
P4
计算机是根据指令操作数据的设备,具有功能性和可编程性。
功能性:是指对数据的操作,表现为数据计算、输入输出处理和结果储存等
可编程性:是指它可以根据一系列系统指令自动地、可预测地、准确地完成操作者的意图
P5
摩尔定律:单位面积集成电路上可容纳的晶体管的数量每两年翻一倍。
P6
程序设计语言的执行方式包括编译执行和解释执行两种
P7
程序设计语言包含三个大类:机器语言、汇编语言和高级语言
机器语言是一种二进制语言,它直接使用二进制代码表达指令,是计算机硬件可以直接识别和执行的程序设计语言。例:2+3 在16位电脑的指令为:11010010 00111011
汇编语言使用助记符与机器语言中的指令进行一一对应,在计算机发展的早期能帮助程序员提高编程效率。例:2+3 汇编语言指令为 add 2,3,result,运算结果写入result。
高级语言是接近自然语言的得的一种计算机程序设计语言,可以更容易地描述计算问题并利用计算机解决计算问题。例:2+3 用高级语言代码表示为 result=2+3
P8
高级语言按照计算机执行方式不同可分为两类:静态语言和脚本语言
静态语言:编译执行
好处: 1、对于相同源代码,编译产生的目标源代码执行速度更快 2、目标源代码不再需要编译器就可以运行,在同类型操作系统上使用灵活。
脚本语言:解释执行
好处: 1、解释执行需要保留源代码,程序纠错和维护十分方便 2、只要存在解释器,源代码可以在任何操作系统上运行,可移植性好。
解释和编译的区别:编译是一次性地翻译,一旦程序被编译,不在需要编译程序或源代码。解释则是每次程序运行都需要解释器和源代码。
P9
计算思维是一种区别于数学为代表的逻辑思维和以物理为代表的实证思维的第三种思维模式:编程是一个求解问题的过程, 首先需要分析问题,抽象内容之间的交互关系。 接着设计利用计算机求解问题的确定性办法。 进而通过编写和调试代码解决问题
P10
编写程序有一定框架和模式。学习一门编程语言: 首先要掌握该语言的语法 其次要学会结合计算问题设计程序结构,从程序块、功能块角度理解并涉及整个程序框架。 最后要掌握解决问题的能力
P12
>>>print('Hello World') Hello World 第一行“>>>”是Python语言运行环境的提示符,其标识可以在此符号后面输入Python语句。第二行是Python语句的执行结果
Python语言的特点: 1、语法简洁 2、与平台无关 3、类库丰富
P15
运行Python程序有两种方式:交互式和文件式。
交互式:指Python解释器即时响应用户输入的每条代码,给出输出结果
文件式:也称为批量式,指用户将Python程序写在一个或多个文件中,然后启动Python解释器批量执行文件中的代码
P22
每个程序都有一个统一的运算模式:输入数据、处理数据、输出数据。这种朴素的运算模式形成了基本的程序编写方法:IPO(input、process、output)
P24
使用计算机解决问题的步骤:分析问题、划分边界、设计算法、编写程序、调试测试、升级维护
可以简化为:确定IPO、编写程序、调试程序
P26
Python2.X已经是遗产,Python3.X是这个语言的现在和未来
第二章
P35
根据IPO描述和算法设计编写如下温度转换的Python程序代码
#e1.1TempConvert.py TempStr = input("请输入带符号的温度值:") if TempStr[-1] in ['F','f']: C = (eval(TempStr[0:-1]) - 32)/1.8 print("转换后的温度是{:.2f}C".format(C)) elif TempStr[-1] in ['C','c']: F = 1.8*eval(TempStr[0:-1]) + 32 print("转换后的温度是{:.2f}F".format(F)) else: print("输入格式有误")
P36
Python程序包括 格式框架、注释、变量、运算符、表达式、文件的打开关闭读取、分支语句、循环语句、函数等语法元素
Python语言使用严格的“缩进”来表明程序的格式框架。
P37
单层缩进代码属于最邻近的一行非缩进代码,多层缩进代码根据缩进关系决定所属范围
单行注释使用 #开头,多行注释使用 ''' (三个单引号)开头和结尾
P39
保留字也称为关键字,指背编程语言内部定义并保留使用的标识符。
字符串使用两个双引号“”或者两个单引号‘’括起来的零个或多个字符 字符串包括两种序号体系:正向递增序号和反向递减序号
Python字符串也提供区间访问方式,采用 [N:M] 格式,表示字符串中从N到M(不包含M)的子字符串。
P40
Python语言中‘=’表示赋值,即将等号右侧的计算结果付给左侧的变量。 包含等号(=)的语句也被称为赋值语句。例如 t = 1 还有一种同步赋值语句,可以同时给多个变量赋值,基本格式如下: <变量1>,<变量2>,……,<变量n> = <表达式1>,<表达式2>,……,<表达式n> 例如:x , y =1,2
input()函数从控制台获得用户属兔,无论用户在控制台输入什么内容,都以字符串的形式返回结果。 <变量> = input(<提示性文字>)
P41
分支语句是控制程序运行的一类重要语句,它的作用是根据判断条件选择程序的执行路径。
if <条件1>: <语句块1> elif <条件2>: <语句块2> …… else: <语句块n+1>
P42
eval(<字符串>)函数的作用是将输入的字符串转变成Python语句并执行。
P43
当输出变量值时,需要采用格式化输出方式,通过format()方法将待输出变量整理成希望的输出格式。
P44 & P54
循环语句有多种类型:条件循环和遍历循环
条件循环: while (<条件>): <语句块1> <语句块2> 当 条件 为真(True)时,执行语句1.当条件为假(False)时突出循环执行循环后的语句2
遍历循环: for i in range(<循环次数>): <语句1>
第三章
P62
Python语言提供整数、浮点数、复数3种数字类型
P66-P69
Python解释器为数字类型提供 数值运算操作符、数值运算函数、类型转换函数等操作方法
数值运算操作符: 1、x+y :x与y之和 2、x-y :x与y之差 3、x*y :x与y乘积 4、x/y :x与y之商 5、x//y :x与y的整数商 6、x%y :x与y商的余数 7、-x :x的负值 8、+x :x本身 9、x**y :x的y次幂
数值运算函数:【详见P68】 1、abs(x) :x的绝对值 2、pow(x,y[,z]) :(x**y)[%z]。[...]表示该参数可以省略。功能与 x**y相同
数字类型转换函数: 1、int(x) 将x转换为整数,x可以是浮点数或者字符串 2、float(x) 将x转换为浮点数,x可以是整数或者字符串 3、complex(re[,im]) 生成一个复数,实部为re,虚部为im,re可以是整数、浮点数、字符串,im可以是整数、浮点数但不能是字符串
P70
math库中的函数不能直接使用,需要首先使用保留字 import 引用该库。
第一种引用方式 : import math 引用整个math库 第二种引用方式:form math import <函数名> 引用math库中某一函数
P78
字符串是字符的序列表示,通过基本的 字符操作符、内置字符串处理函数和字符串处理方法等对字符串进行操作。
字符串可以用一对单引号(')、双引号(")、或者三引号(''')构成。
1、单引号和双引号都可以表示单号字符串,两者作用相同。 2、使用单引号时双引号可以作为字符串的一部分;使用双引号时单引号可以作为字符串的一部分 3、三引号可以表示单行或者多行字符串
P79
>>> name = "Python程序设计语言" >>> name[0] 'P' >>> print(name[0],name[7],name[-1]) P 序 言 >>> print(name[2:-4]) thon程序 >>> print(name[:6]) Python >>> print(name[6:]) 程序设计语言 >>> print(name[:]) Python程序设计语言
P80
转义字符: \n : 换行 \\ : 反斜杠 \' : 单引号 \" : 双引号 \t : 制表符 Tab
必会:
>>> "Python语言"+"程序设计" 'Python语言程序设计' >>> name = "Python语言"+"程序设计"+"基础" >>> name 'Python语言程序设计基础' >>> "Goal"*3 'GoalGoalGoal' >>> "Python语言" in name True >>> "Y" in "Python语言" False
P81
len(x)返回字符串x的长度,Python3以Unicode字符编码为计数基础,因此字符串中 英文字符和中文字符都是1个长度单位
P82
内置字符串处理函数
1、len(x) 返回字符串x的长度,也可以返回其他组合数据类型的元素个数 2、str(x) 返回任意类型x对应的字符串形式 3、chr(x) 返回Unicode编码x对应的的单字符 4、ord(x) 返回单字符表示的Unicode编码
P85
字符串通过format()方法进行格式化处理
<模板字符串>.format(<逗号分隔的参数>)
P87 必须掌握
>>> s = "PYTHON" >>> "{0:>30}".format(s) # 默认左对齐 ' PYTHON' >>> "{0:<30}".format(s) # 右对齐 'PYTHON ' >>> "{0:^30}".format(s) # 居中 ' PYTHON ' >>> "{0:*^30}".format(s) # 居中且用 * 填充空位 '************PYTHON************'
# 格式控制标记符中逗号(,)用于显示数字类型的千位分隔符 >>> "{0:^20,}".format(123456789) ' 123,456,789 ' >>> "{0:-^20}".format(123456789) # 对比输出 '-----123456789------' >>> "{0:-^20}".format(12345.6789) '-----12345.6789-----' >>> "{0:-^20,}".format(12345.6789) '----12,345.6789-----'
# <.>精度表示两个含义,由小数(.)开头。对于浮点数,精度表示小数部分输出有效位数。对于字符串,精度表示输出的最大长度 >>> "{0:.2f}".format(12345.6789) '12345.68' >>> "{0:H^20.3f}".format(12345.67890) 'HHHHH12345.679HHHHHH' >>> "{0:.4}".format("Python") 'Pyth'
<类型>表示输出整数和浮点数类型的格式规则
整数: 1、b:输出整数的二进制 2、c:输出整数的对应的Unicode字符 3、d:输出整数的十进制方式 4、o:输出整数的八进制方式 5、x:输出整数的小写十六进制方式 6、X:输出整数的大写十六进制方式
>>>"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425) '110101001,Ʃ,425,651,1a9,1A9'
浮点数: 1、e :输出浮点数对应的小写字母e的指数形式 2、E :输出浮点数对应的大写字母E的指数形式 3、f :输出浮点数的标准浮点形式 4、% :输出浮点数的百分形式
>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425) '110101001,Ʃ,425,651,1a9,1A9' >>> "{0:e},{0:E},{0:f},{0:%}".format(3.1415) '3.141500e+00,3.141500E+00,3.141500,314.150000%' >>> "{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.1415) '3.14e+00,3.14E+00,3.14,314.15%'
第四章
P96
程序由3种基本结构组成:顺序结构、分支结构和循环结构
P97
顺序结构是是程序的基础,程序按照线性顺序依次执行
分支结构是包括单分支、二分支结构。二分支结构组合形成多分支结构
循环结构是程序根据判断条件结果向后反复执行的一种运行方式。 根据循环体触发条件不同,循环结构包括条件循环和遍历循环
P100
Python通过 if、elif、else等保留字提供单分支、二分支和多分支结构
if <条件>: <语句块>
微例4.4:【考到的话自己根据题目要求灵活改变】 PM = eval(input("请输入PM2.5的数值:")) if PM >=75 : print("空气污染,请小心!") elif PM >= 35: print("空气良好,适度户外运动!") elif 0<= PM <35: print("空气优质,快去户外运动!") else: print("输入有误,请检查输入")
P107
Python通过for、while等保留字提供遍历循环和无限循环的结构。
两种循环: 1、遍历循环的次数采用遍历机构中的元素个数来体现,具体使用for语句实现 2、非确定次数循环指程序不确定循环体可能执行的次数,而通过条件判断是否继续执行循环体。Python提供了根据判断条件执行程序的无限循环,采用while语句实现
P108
遍历结构可以是字符串、文件、组合数据类型或者range()函数等,常用方式如下: 循环N次 遍历文件fi的每一行 遍历字符串s 遍历列表ls for i in range(N): for line in fi: for c in s: for item in ls: <语句块> <语句块> <语句块> <语句块>
Python通过保留字while实现无限循环,基本使用方法如下: while <判断条件>: <语句块> while语句判断条件和if语句中的判断条件一样,结果为True和False
P110
continue语句和break语句区别是:continue语句只结束本次循环,而不终止整个循环的执行;而break语句则结束整个循环过程,不在判断执行循环的条件是否成立。
P111
随机运算的标准函数库random共提供了9个常用函数。使用random库的主要目的是生成随机数。[ 只需要查阅苦衷随机数生成函数,找到符合场景的函数即可,该库提供了不同类型的随机数函数,所有函数都是基于最基本的random.random()扩展而来]
P112
random库常用函数表:详见书本
1、seed(a = None) :初始化随机数种子,默认为当前系统时间 2、random() :生成一个[0.0,1.0)之间的随机小数 3、randint(a,b) :生成一个[a,b]之间的整数
P116
Python通过try、except等保留字提供异常处理功能。
P118
异常和错误: 可以预见的例外情况叫做“异常”,异常发生后经过妥善处理可以继续执行。 不可预见的例外情况叫做“错误”,错误发生后程序无法恢复执行,而且程序本不该处理这类可能的例外。
第五章
P124
函数是一段具有特定功能的、可重用的语句组,用函数名来表示并通过函数名进行功能调用。 使用函数主要两个目的:降低编程难度和代码复用。
P128
函数可以定义可选参数,使用参数的位置或名称传递参数值,根据函数中变量的不同作用域由不同的函数返回值方式。
>>>def dup(str,times = 2): print(str*times) >>>duo("knock~") knock~knock~ >>>dup("knock~",4) knock~knock~knock~knock~
P130
一个程序的变量包括两类:全局变量和局部变量。
全局变量是指 在函数之外定义的变量,一般没有缩进,在程序执行全过程有效。 局部变量是指 在函数内部定义的变量,尽在函数内部有效,当函数退出时变量将不复存在。
P132-133
Python时间处理的标准函数库datetime提供了一批显示日期和时间的格式化方法。
使用datetime类需要使用import关键字,引用datetime类的方法如下: from datetime import datetime
使用datetime.now()获取当前日期和时间对象,使用方法如下: datetime.now() 作用:返回一个datetime类型,表示当前的日期和时间,精确到毫秒。
P141
函数是程序的一种【抽象】,它通过【封装】实现代码复用。可以利用函数对程序进行【模块化设计】
P142
面向过程和面向对象知识编程方式不同、抽象程度不同,所有面向对象编程能实现的功能采用面向过程同样能完成,两者在解决问题上不想存在优劣之分,很多专业程序员仅采用面向过程方式编程。具体采用哪种方法取决于具体开发环境和要求,一般在编写较大规模程序时采用面向对象方法。
P143
这种函数定义中调用函数自身的方式称为递归。
P144
微例5.2
def fact(n): if n == 0: return 1 else: return n * fact(n-1) num = eval(input("请输入一个整数:")) print(fact(abs(int(num))))
第六章
P154
组合数据类型为多个同类型或不同类型数据提供单一表示,组合数据类型分为三类:序列类型、集合类型、映射类型
1、序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他
2、集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。
3、映射类型是“键-值”数据项的组合,每个元素是一个键值对, 表示为(key,value)
P155
Python语言中有很多数据类型都是序列类型,比如:str(字符串)、tuple(元组)、list(列表)。
字符串可以看成是单个字符的有序组合,属于序列类型。
元组是包含0个或多个数据项的【不可变】序列类型。元组生成后是固定的,其中任何数据项不能替换或者删除。
列表则是一个可以修改数据项的序列类型,使用也最为灵活
P156
序列类型的常用操作符和函数【详见表6.1】
x in s :如果x是s的元素,返回Ture,否则返回False
s+t : 链接s和t
len(s) : 序列s的元素个数(长度)
元组(tuple)是序列类型中比较特殊的类型。它一旦创建不可更改,在表达固定数据项、函数多返回值、多变量同步赋值、循环遍历等情况下十分有用
P156-158
集合类型是包含0个或多个数据项的无序组合。集合中的元素不可重复,元素类型只能是固定数据类型。
由于集合是无序组合,它没有索引和位置的概念,不能分片,集合中的元素可以动态增加或删除。集合使用大括号({})表示,可以用赋值语句生成一个集合。
集合主要用于3个场景:成员关系测试、元素去重和删除数据。
P159
映射类型是“键-值”数据项的组合,每一个元素是一个键值对,即元素是 (key,value),元素之间无序。键值对(key,value)是一种二元关系,源于属性和值得映射。 映射类型主要以字典(dict)体现
P160
列表(list)是包含0个或者多个对象引用的有序序列,属于序列类型。与元组不同,列表的长度和内容都是可变的,可自由对列表中的数据项进行增加、删除或者替换。列表没有长度限制,元素类型可以不同,使用非常灵活。
由于列表是序列类型,所以列表支持成员关系操作符(in)、长度计算函数(len())、分片([])。列表可以同时使用正向递增序号和反向递减序号,可以采用标准的比较操作符(<、<=、==、!=、>=、>)进行比较。
列表使用中括号[]表示,也可以通过list()函数将元组或者字符串转化成列表。
列表和数组的区别: 1、数组需要预先分配大小,列表不需要。 2、数组要求元素类型一致,列表不需要。
P161
表6.4
ls.append(x) : 在ls列表最后增加一个元素x
ls.insert(i,x) : 在ls列表的第 i 个位置增加元素x
P165-166
字典包含0个或者多个键值对的集合,没有长度限制,可以根据键值索引值得内容
很多应用程序需要更灵活的信息查找方式。在编程术语中根据一个信息查找另一个信息的方式构成了“键值对”,它代表索引用的键和对应的值构成的成对关系,即通过一个特定的键(身份证号)来访问值(学生信息)。
P167
表6.5
<d>.keys() : 返回所有键信息 <d>.values() : 返回所有值信息 <d>.items() : 返回所有键值对 <d>.popitem() :随机从字典中取出一个键值对,以元组(key,value)形式返回 <d>.clear() : 删除所有键值对 del <d>[<key>] : 删除字典中某一键值对 <key> in <d> : 如果键在字典中返回Ture,否则返回False
P169
jieba库是Python中一个重要的第三方中文分词函数库
jieba库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组。
jieba库支持三种分词模式: 精确模式:将句子最精确地切开,适合文本分析; 全模式:将句子中所有可以成词的词语都扫描出来,速度非常快,但不能消除歧义 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
P171
实例10
是什么 : 对于一篇给定文章,希望统计其中多次出现的词语,进而概要分析文章内容这就是"词频统计"问题。
思路: 词频统计只是累加问题,即对文档中的每一个词设计一个计数器,词语出现一次,相关计数器就加1。如果以词语为键,计数器为值,构成<单词>:<出现次数>的键值对,将很好的解决该问题,这就是字典类型的优势
英语文本以空格或标点符号来分隔词语,获得单词并统计数量相对容易,中文字符之间没有天然的分隔符,需要对中文文本进行分词。
P172
统计Hamlet英文词频: 第一步是分解并提取英文文章的单词 第二步是对每个单词进行计数 第三步是对单词统计值从高到低排序,输出前20个高频单词并格式化打印输出
P174
中文文章需要分词才能进行词频统计,这需要使用到jieba库。分词后的词频统计的方法和Hemlet的英文词频方法类似。
P175
同一个人物会有不同的名字,这种情况需要整合处理。同时,英文词频统计类似,需要排除一些人名无关的词汇。进一步完善代码后,第三行增加了排除词库excludes,第十行到第十七行增加了同一人物不同名字的处理。
第七章
第八章
第九章