第一章:Python程序设计导论
目标:
1.了解程序概念 2.理解程序如何执行 3.了解python语言及其开发环境
内容:
一、了解
1.计算机是做什么的。 执行计算和存储数据。
2.编程语言的发展。 机器语言--汇编语言--高级语言
3.什么是程序。 程序=数据结构(数据的存储和组织)+算法(流程、计算、代码、操作)
4.程序语言的语法和语义。
5.程序的运行。 从源代码到运行:编译方式(C、C++),解释方式(python、R),既有编译又有解释(java)
6.为什么选择python。 全球Python开发者构成了丰富的生态;大量的资料和代码;大量的开源库;大数据相关的资源尤其丰富
7.python交互式。 PEPL--读入,求值,打印,循环。有python、ipython(工具 更强大)、pycharm等
8.版本。 3.x稳定
9.安装。 Anaconda官网/清华镜像(国内下载速度更快)
pychrm--python集成开发环境
几个重要网址: http://www.python.org/ --官网
http://www.python.org/ doc/ --文档官网
http://bug.python.org/ --技术官网
二、python代码规范
1.缩进。
2.注释。 以#开始/在一对三引号之间的且不属于任何语句
3.每个import只导入一个模块。
4.在行尾加上\表示续行。更建议使用括号包含多行内容。
5.必要的空格与空行。
6.适当使用异常处理结构。
三、python文件名
1. .py--python源文件,由python解释器负责解释执行。
.pyw--python源文件,常用于图形界面文件
.pyc--python字节码文件,可以适当提高运行速,但无法查看类型文件内容。
.pyo--优化的python字节码文件
.pyd--由其他语言编译的二进制文件
四、安装
1.安装完python之后,设置环境变量(在path中新建python的路径),可用cmd测试(输入python)
2.可以安装ipython更好的交互。安装之后,在cmd输入ipython.exe notebook回车,即可编译。
五、python编译器
1.CPython 这个编译器是由C语言开发的。
2.IPython 基于CPython的一个交互式编译器,两者代码功能相同。
3.PyPy 执行速度快
4.Jython 基于java平台,提供了所有的java类
5.IronPython 与Jython类似
总结:
一、python的编辑方式:1.Windows命令,在cmd中输入python;
2.调用IDLE启动python;
3.使用ipython,在cmd中输入ipython.exe notebook;
4.使用集成开发环境如pycharm
5.Anaconda
二、编译方式和解释方式的区别:
1. 编译型语言,首先编写源程序文件,然后对源程序文件进行编译,生成目标文件,源文件可能会使用其他文件中的内容,所以目标文件需要链接文件中使用到的其他资源,链接完成之后生成可执行的文件,计算机要执行程序时,直接执行编译好的可执行文件
2. 解释型语言,计算机要执行程序的时候才读入实现编写好的源程序代码,一边读入,一边翻译成计算机可执行的命令,读一行,翻译一行,执行一行,就这样解释着执行代码
三、IDE环境给我们编码带来的好处是什么?
IDE集成了代码编写功能、分析功能、编译功能、调试功能,而拥有了这一整套的集成开发环境,就会帮助编程人员更好地实现编程的整体任务并且大大提高编程的效率。
四、Python的运行方式有哪些,各有什么特点?
Python的运行方式有两种,一种是交互式REPL,一种是脚本。
1. 直接输入python进入交互模式,相当于启动了Python解释器,但是等待你一行一行地输入源代码,每输入一行就执行一行。比较适合用于验证操作
2. 直接运行.py文件相当于启动了Python解释器,然后一次性把.py文件的源代码给执行了,没有机会以交互的方式输入源代码的。
五、python和ipython有什么区别?
python是官方的,但是功能比较弱,而ipython是非官方的,功能更强大一些,更好用。例如:
1. Ipython会对命令提示符的每一行进行编号,而python不支持这一功能
2. Ipython有tab补全功能,而python不支持这一功能
第二章:python程序设计初步
程序是用来处理数据的,变量是用来存储数据的。
一、运算符、数据类型、基本的输入和输出
1.程序组成: 一系列的表达式和语句。(在repl环境中运行,一次运行一句;python解释器中,批量运行。)
2.运算符: 表达式组成的基础是运算符。
可以关注一个网站:廖雪峰的官方网站
(1)算术运算符:
真除法:/ 正常的除法
求整商://
幂运算: **
+运算符除了用于算术加法外,还可以用于列表、元组、字符串的连接。但不支持不同对象之间的相加或连接。(python内部把true当作1,把F
alse当做0)
注意:不同类型的数混合运算时会将整数转换为浮点数
在交互模式中,最后被输出的表达式结果被赋值给变量 _, _ 变量应被用户视为只读变量
(2)关系运算符
关系运算符可以连用。
(3)逻辑运算符
(4)位运算符
(5)赋值运算符
(6)矩阵相乘运算符
注意:
,逗号只是一个分隔符
3.数据类型
(1)基本数据类型
数字:整数:各进制数、浮点数(小数)、复数
布尔值:True,False (注意大小写)
空值:None,特殊的空值
字符串:
4.基本的输入和输出
输入: input()
input()函数的返回结果都是字符串,
需要将其转换成相应类型再操作
输出:
(1)表达式语句
(2)print()函数
(3)使用文件对象write()的方法,标准输出文件可以用sys.stdout引用
Notes:1.使输出的值更加多样,用str.format()函数格式化输出值
(1) 参数会替换掉括号及其里面的字符
(2)可以在括号中写入数字用于指向传入对象在format中的位置
(3)
(4)
(5)
(6)%也可以实现字符串格式化
2. 使输出的值转成字符串,用repr()或str()函数实现。str()返回一个用户易读的表达形式;repr()产生一个解释器易读的表达形式(可以转义字符串中的特殊字符,如换行。即不识别为换行)
文件读写open(filename,mode)返回一个file对象。filename包含要访问文件名称的字符串值;mode决定了文件打开的模式(只读、写入、追加等)
二、变量和字符串
1.变量(python中的变量只是一个变量名)
(1)定义:对内存中值的引用。(每个变量在使用前必须被赋值,赋值之后才会被创建。)
notes:不需要事先声明变量及其类型
python是强类型编程语言、动态类型语言)
允许多个变量指向同一个值
(python采用基于值的管理方式)
可以写代码
变量并不直接存储内存的值,而是存储了值的内存地址或者引用。
python具有自动内存管理功能)
(2)定义变量名:
必须以字母或下划线开头,变量命中不能有空格和标点符号,大小写敏感,不能使用关键字,不建议使用模块名。
类型:数字型、非数字型、数值型、字符串型
类型转换。
2.字符串
(1)定义:以单引号或双引号括起来的任意文本。
原始字符串,但字符串的最后一个值不能是/
第四章:python序列
一、 python序列、列表和元组
1.序列是python中最基本的数据结构。
python中最常用的序列结构有列表、元组、字符串、字典、集合等。 注:列表、字符串、元组支持双向索引。
2、列表
(1)有序、可变的序列。元素查找速度慢。一个列表中的数据类型可以各不相同,甚至可以是元组等。
(2)常用方法
(3)列表的创建和删除
#直接将一个列表赋值给变量即可创建。可以创建一个空列表。可以使用list()函数将元组等转换为列表。(把字典转换为列表时,默认是将字典的键转换为列表)
#del命令可以删除整个列表,也可删除指定位置的元素。如果列表所指向的的值不再有其他对象所指,python将同时删除该值。
使用pop()方法默认删除最后一个,也可以指定删除位置。
使用remove()方法删除首次出现的指定元素。
(4)列表元素的添加
#使用+运算符(其实是创建了一个新列表,所以操作速度慢)
#使用列表对象的append()方法在列表尾部追加元素,原地改变列表,不改变列表在内存中的首地址。速度较快。
注:当为对象修改值时,并不是直接修改变量的值,而是使变量指向新的值。
列表中包含的是值的引用,而不是直接包含元素值。
若直接修改变序列变量的值,与python普通变量情况一样;如果通过下标或可变序列自身对象提供的方法来增加和删除元素时,序列对象在内存中的起始地址不变,仅仅是被改变值的元素地址发生变化,即原地操作。
#使用extend()方法将另一个对象的所有元素添加至该列表对象尾部,原地操作。
#insert()方法添加到指定位置,原地操作。
注:建议从列表尾部添加和删除元素,因insert()方法引起元素位置移动,使速度减慢。
#使用乘法扩展列表元素,不是复制值,而是复制列表元素的引用
(5)列表元素的访问和计数、获取
index()获取列表元素首次出现的下标
count()方法统计指定元素在列表对象中出现的次数
使用下标获取
(6)成员资格判断
in判断一个值是否在列表中
3、元组
(1)序列不可变,但可以用+组合元组
(2)元组的创建与删除
#包含一个元素的元组,最后必须多写一个逗号
。使用tuple函数经其他序列转换为元组。
#使用del可以删除元组对象,不能删除元组元素。
(3)元素的获取
#可以使用下标
二、字典和集合 、序列解包
1、字典
(1)无序、可变序列。键不可重复。
(2)字典中的键是任意不可变数据。globais()返回包含当前作用域内所有全局变量和值的字典;locals()返回包含当前作用域内所有局部变量和值的字典
(3)字典的创建与删除
#将字典赋值给一个变量;用dict利用已有数据创建字典
;用dict根据给定的键值创建字典
;
以给定内容为键,创建值为空的字典
#用del删除字典
用字典对象的pop()和popitem()方法弹出并删除指定的元素
(4)字典元素的读取
#以键作为下标读取字典元素,若键不存在则抛出异常。
#使用字典的get()方法获取键的对应值,并且可以在键不存在的时候返回指定值
#使用items、keys、values方法获取,分别返回键值对、键、值。
(5)字典元素的添加和修改
#以指定键为下标为字典赋值时(若键不存在时表示添加一个键值对)
字典对象的setdefault()方法用于返回指定“键”对应的的“值”,如果字典中不存在该“键”,就添加一个新元素,并设置该键对应的值
使用update()方法将另一个字典的键值对添加到当前字典中
#使用del删除指定键的元素。clear()方法删除所有元素;pop()方法删除并返回指定键的元素;popitem()删除并返回字典中的一个元素。
(6)字典对象迭代
当字典对象迭代时,默认是遍历字典的键,同时也可以使用items()方法遍历字典中的元素,即所有键值对。使用字典对象的keys()方法返回所有的键,values()方法返回所有的“值”
sorted函数排序
内置函数len()、max()、min()、sum()、sorted()以及成员测试运算符in也适合字典对象,但是默认是作用于字典的“键”,若想作用于元素,即“键:值”对,则需要使用字典对象的items()方法来明确指定,若想作用于“值”,则需要使用values()方法明确指定。
(7)有序字典
Python内置字典是无序的,如果需要一个可以记住元素插入顺序的字典,可以使用collections.OrderedDict.
2、集合
(1)无序、可变序列。元素不可重复。集合中只能包含数字、字符串、元组等不可变类型。
(2)集合的创建与删除
#将集合赋值给变量;用set将其他类型数据转换为集合
#使用del删除;pop()方法弹出并删除一个元素;remove()方法删除一个指定元素;clear()方法清空;discard()用于从集合中删除一个特定的元素,如果元素不存在于这个集合中则忽略该操作
(3)集合操作
#交集
#差集
#判断是否是子集
#包含关系测试
(4)集合修改
#用集合对象的dict()方法可以为其增加新元素,add()
#update()方法用于合并另外一个集合中的元素到当前集合中
3、序列解包--对多个变量同时赋值
(1)定义:将序列拆开,同时给多个变量赋值
(2)应用:给多个变量同时赋值(可以对range对象进行序列解包)
序列解包对列表和字典同样有效
序列解包用于字典时,如果不调用items()方法,则默认是对字典“键”进行操作 序列解包遍历多个序列
*表示解开
三、字符串
1、字符串介绍
(2)有各种编码格式。
GB2312我国制定的中文编码。一个字节表示英语,两个字节表示中文
UTF-8对所有国家需要用到的字符进行了编码。一个字节表示英文字符,三个字节表示中文。
note:不同的编码格式有不同的存储和表现形式。字符串编码也具有加密的效果。encode()编码,decode()解码
(3)python3.x在统计字符串长度时统一按一个字符和对待处理。
(4)不可变序列类型。
(5)三引号允许字符串跨多行,字符串中可以包含换行符、制表符等其他字符
(6)字符串驻留机制:对于短字符串,将其赋值给多个不同对象时,内存中只有一个副本,多个对象共享该副本。长字符串不遵循该机制
2、字符串格式化
(1)%x字符串
(2)使用format方法进行格式化
#:新方式Formatted String Literals--与上个方法类似
3、字符串常量
#标准库string中提供的
,应用:随机密码生成原理
4、字符串常用方法
成员判断in;*--字符串内容重复
5、切片操作:仅限于读取不支持修改
6、可变字符串
总结:
列表有序可变
元组有序不可变
字典无序可变
集合无序可变
字符串有序不可变