第四章、程序的组织结构
1996年,计算机科学家证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构、和循环结构这三种基本结构组合而成
顺序结构
程序从上到下顺序地执行代码,中间没有任何的判断和跳转,直到程序结束
对象的布尔值
python一切皆对象,所有对象都有一个布尔值,获取对象的布尔值,使用内置函数bool()
以下对象的布尔值位False
False、数值0、None、空字符串、空列表、空元组、空字典、空集合
选择结构
程序根据判断条件的布尔值选择性地执行部分代码,明确的让计算机知道在什么条件下,该去怎么做
单分支结构
中文语义:如果…就
语法结构:
if 条件表达式:
条件执行体
双分支结构
中文语义:如果…不满足…就…
语法结构:
if 条件表达式:
条件执行体1
else:
条件执行体2
多分支结构
语法结构:
if 条件表达式1:
条件执行体1
elif条件表达式2:
条件执行体2
elif条件表达式N:
条件执行体N
[else:]
条件执行体N+1
嵌套if
语法结构:
if 条件表达式1:
if 内层条件表达式:
内存条件执行体1
else :
内存条件执行体2
else:
条件执行体
条件表达式:x if 条件判断 y (如果条件判读为True,执行x,如果条件判断为False,执行y)
print("使用条件表达式进入比较")
print((str(num_a)+"大于等于"+str(num_b)) if num_a >= num_b else(str(num_a)+"小于",+str(num_b)))
pass语句
pass语句什么都不做,只是一个占位符,用在语法上需要语句的地方
什么时候用:先搭建语法结构,还没想好代码怎么写的时候
那些语句一起使用:
1、if语句的条件执行体
2、for-in语句的循环体
3、定义函数时函数体
第五章
range()函数的使用
用于生成一个整数序列
创建range对象的三种方式:
range(stop):创建一个[0,stop)之间的整数序列,步长为1
range(start,stop):创建一个[start,stop)之间的整数序列,步长为1
range(start,stop,step):创建一个[start,stop)之间的整数序列,步长为step
返回值是一个迭代对象
**range类型的优点:**不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,才会计算序列当中的相关元素
in与not in 判断整数序列中是否存在(不存在)指定的整数
while循环
循环结构:反复做同一件事的情况,称为循环
循环的分类:while和for-in
语法结构:
while 条件表达式:
条件执行体(循环体)
选择结构的if与循环结构while的区别:if是判断一次,条件为True执行一行。while是判断N+1次,条件为N执行N次
四步循环体:
1、初始化变量
2、条件判断
3、条件执行体(循环体)
4、改变变量
for-in循环
in表达式(字符串、序列等)中依次取值,又称为遍历
for-in遍历的对象必须是可迭代对象
for-in的语法结构
for 自定义的变量 in 可迭代的对象
循环体
循环体内不需要访问自定义变量,可以将自定义变量代替为下划线
break、continue与else语句
break语句:用于结束循环结构,通常与分支结构if一起使用
continue语句:用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用
else:与else语句配合使用的三种情况:可以与if、可以与while、还可以与for
嵌套循环
循环结构中又嵌套了另外的完整的循环结构,其中内层循环作为外层循环的循环体结构
二重循环中的break和continue
二重循环中的break和continue用于控制本层循环
第六章
列表的创建与删除
为什么需要列表?因为变量可以存储一个元素,而列表是一个“大容器”,可以存储N多个元素,程序可以方便地对这些数据进行整体操作
列表的创建:列表的创建需要使用中括号[],元素之间使用英文的逗号进行分隔
list = [“hello”, “world”, “python”]
list:列表对象名 =:赋值号 [:中括号 ,:逗号分隔符
列表的创建方式
1、使用冲括号
列表的特点:
1、列表元素按顺序有序排序
2、索引映射唯一数据(注意:索引从左到右是从0开始的,从右到左是重-1开始的)
3、列表可以存储重复元素
4、任意数据类型混存
5、根据需要动态分配和回收内存
列表相当于其他语言的数组
列表的查询操作
获取列表中指定元素的索引:通过index()函数进行查询
如果列表中存在N个相同元素,只返回相同元素中的第一个元素的索引
如果查询的元素在列表中不存在,则会抛出ValueError
还可以在指定的start和stop之间进行查询
**获取列表中的单个元素:**正向索引从0到-1,逆向索引从-N到-1,指定的索引不存在,抛出indexError
获取列表中的多个元素:
语法格式:
列表名[start : stop :step]
切片操作的结果为:原列表片段的拷贝
切片的范围:[start,stop]
step默认为1,可简单写为[start,stop]
step为正数,[:stop,step]:切片的第一个元素默认是列表第一个元素,从start开始往后计算切片
[start::step] :切片的最后一个元素默认是列表的最后一个元素,从start开始往后计算切片
step为负数,[:stop:step]:切片的第一个元素默认是列表的最后一个元素,从start开始往后计算切片
[start::stop] :切片的最后一个元素是默认列表的第一个元素,从start开始往后计算切片
列表元素的查询操作
判断指定元素在列表中是否存在
元素 in 列表名(字符串)、元素 not in 列表名(字符串)
列表元素的遍历
for 迭代变量 in 列表名 :
列表元素的增、删、改操作
列表元素的添加操作
添加操作方法:append():在列表的末尾添加一个元素
extend():在列表的末尾至少添加一个元素
insert():在列表的任意位置添加一个元素
切片:在列表的任意位置至少添加一个元素
列表元素的删除操作
删除操作:remove():一次只删除一个元素,重复元素只删除第一个,元素不存在抛出ValueError
pop():删除指定索引位置上的元素,指定索引不存在抛出IndexError,不指定索引,删除列表中最后一个元素
切片:一次至少删除一个元素
clear():清空列表
del:删除列表
列表元素的修改操作
为指定索引的元素赋值一个新值
为指定的切片赋予一个新值
列表元素的排序
常见的两种方式
1、调用sort()方法,列表中所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True,进行降序排序
2、调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变
列表推导式
列表生成式
列表生成式简称“生成列表的公式”
[ i for i in range(1,10)]
注意事项:“表示列表元素的表达式”中通常包含自定义变量
第七章
什么是字典
字典是python内置的数据结构之一,与列表一样是一个可变序列,以键值对的方式存储数据,字典是一个无序列表
scores = {“张三”:100,“李四”:98,“王五”:87}
字典的原理
字典的实现原理与查字典类似,查字典是先根据部首或拼音查找相应的页码,Python中的字典是根据key查找value所在的位置
字典的创建与删除
字典的创建最常用的方式
1、使用花括号:scores={“张三”:100,“李四”:98,“王五”:41}
2、使用内置函数dict()
dict(name = “nike”, age = 20)
字典的查询操作
字典中元素的获取有两种方式
1、使用[],举例:scores[“张三”], 会通过对应的键去查找值,但如果键不存在则会报keyError的错误
2、使用get()方法, 举例: scores.get(“张三”), 通过键查找值,如果键不存在则会显示None
字典元素的增、删、改操作
key的判断:
in,指定的key在字典中存在返回True 举例:“张三” in scores
not in , 指定的key在字典中不存在返回True 举例:“张三” not in scores
字典元素的删除
del scores=[“张三”] 通过指定的键删除值,删除的是一对儿,键和值都删除了
字典元素的新增
scores [‘jack’] = 100
获取字典视图的三个方法
获取字典视图,keys()方法:获取字典中所以的key
values()方法:获取字典中所有的value
items()方法:获取字典中所有的key,value对
字典元素的遍历
for item in scores :
print(item)
字典的特点
1、字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
2、字典中的元素是无序的
3、字典中的key必须是不可变对象
4、字典也可以根据需要动态地伸缩
5、字典会浪费较大的内存,是一种使用空间换时间的数据结构
字典推导式
字典生成式
items = [“Fruits”,“Books”,“Others”]
price = [98,78,75]
将items的值作为字典的键,price的值作为字典的值,可以使用内置函数zip()
内置函数zip()
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
{item.upper(): price for item,price in zip(item,prices)}