一、计算机的控制流程:
1、顺序结构 2、选择结构(if语句)3、循环结构(while语句,for-in语句)
#对象的布尔值
1、Python一切皆对象,所有对象都有一个布尔值(1、获取对象的布尔值 2、使用内置函数bool())
2、以下对象的布尔值为False(其余对象的布尔值均为True)
False 数值0 None 空字符串 空列表 空元组 空字典 空集合
二、选择结构
a、单分支结构(如果······就······)
语法结构: if条件表达式:
条件执行体
b、双分支结构(如果······不满足······就······)
语法结构: if条件表达式:
条件执行体1
else条件表达式:
条件执行体2
c、多分支结构
语法结构: if条件表达式:
条件执行体1
elif条件表达式2:
条件执行体2
elif条件表达式N:
条件执行体N
[else:]
条件执行体N+1
d、嵌套if(外层循环执行一次内层循环执行完整的一轮)
语法结构: 语法结构:
if条件表达式1:
if 内层条件表达式:
内存条件执行体1
else:
内存条件执行体2
else:
条件执行体
e、条件表达式(if······else的简写)
语法结构: x if 判断条件 else y
运算规则:如果判断条件的布尔值为True,条件表达式的返回值为x,否则条件表达式的返回值为False
#pass语句
语句什么都不做,只是一个占位符,用在语法上需要语句的地方
什么时候使用?
先搭建语法结构还没想好代码怎么写的时候
哪些语句一起使用?
if语句的条件执行体 for- in语句的循环体 定义函数时的函数体
1、内置函数range()(用于生成一个整数序列)
#创建的三种方式
(1)、range(stop)
print(list(range(3))) #步长默认为1
#结果
#[0, 1, 2]
(2)、range(start, stop)
print(list(range(1, 4))) #步长默认为1
#结果
#[1, 2, 3]
(3)、range(start, stop, step)(返回的值是一个迭代器对象)
#当步长为正数
print(list(range(1, 11, 2)))
#结果
#[1, 3, 5, 7, 9]
#当步长为负数
print(list(range(11, 0, -2)))
#结果
#[11, 9, 7, 5, 3, 1]
三、循环结构(反复做同一件事情的情况)
1、while循环(用于次数不固定的循环,初始条件不成立时一次都不执行)
语法结构: while 条件表达式:
条件执行体(循环体)
四部循环法:a、初始化变量 b、条件判断 c、条件执行体(循环体)d、改变变量
(初始化的变量与条件判断的变量与改变的变量为同一个)
执行流程:
选择结构的if与循环结构while的区别
if是判断一次,条件为True执行一行
while是判断N+1次,条件为True执行N次
2、for-in循环(遍历的对象必须是可迭代的对象)
语法结构:
for 自定义的变量 in 可迭代的对象:
循环体
执行图
循环体内不需要访问自定义变量,可以将自定义变量代为下划线
for _ in range(5):
print('I love python')
3、流程控制语句break(用于结束循环结构,通常与分支结构if一起使用)
非正常结束循环
eg:
for item in range(3):
pwd = input('请输入密码: ')
if pwd == '1234':
print('密码正确')
break
else:
print('密码不正确')
4、流程控制语句continue(用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用)
eg:
for item in range(1, 51):
if item%5 != 0:
continue
print(item)
5、else语句
(1)if条件表达式不成立时执行else
if······:
···
else:
···
(2)没有碰到brake时执行else
while······: for······:
··· ···
else: else:
··· ···
6、二重循环中的break和continue用于控制本层循环
for i in range(5): #代表外层循环要执行五次
for j in range(1, 11):
if j%2==0:
break
print(j)
for i in range(5): #代表外层循环要执行五次
for j in range(1, 11):
if j%2==0:
continue
print(j, end='\t')
print()
四、列表
索引 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
数据 | 'hello' | 'world' | 123 | 98.6 | 'world' | 178 | 'python' |
索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
1、列表创建方式
a、使用中括号 b、调用内置函数list()
2、列表的特点
a、列表元素按顺序有序排列 b、索引映射唯一个数据 c、列表可以存储重复数据 d、任意数据类型混存 d、根据需要动态分配和回收内存
3、列表的查询操作
a、index():获取列表中指定元素的索引(如所查列表中存在N个相同元素,只返回相同元素中的一个元素的索引)
b、获取列表中的单个元素
lst = ['hello', 98, 'world'] #建立列表
print(lst[0]) #正向索引
print(lst[-1]) #逆向索引
print(lst[4]) #指定索引不存在,抛出indexError
c、获取列表中多个元素(切片操作)
语法格式: 列表名[start : stop : step](step默认为1)
切片的结果:原列表片段的拷贝 范围:[start : stop]
step为正数:[ : stop : step](切片的第一个元素默认是列表的第一个元素)
[start : : step](切片的最后一个元素默认是列表的最后一个元素)
从start开始往后计算切片
step为负数: [ : stop : step](切片的第一个元素默认是列表的最后一个元素)
[start : : step](切片的最后一个元素默认是列表的第一个元素)
从start开始往前计算切片
d、判断指定元素在列表中是否存在
元素 in 列表名 元素 not in 列表名
e、列表元素的遍历
for 迭代变量 in 列表名 :
操作
4、列表元素的增加
增加操作 | 方法/其它 | 操作描述 | 备注 |
append() | 在列表的末尾添加一个元素 | 在原列表上进行改动 | |
extend() | 在列表的末尾至少添加一个元素 | 在原列表上进行改动 | |
insert(i, x) | 在列表的任意位置添加一个元素 | 在原列表索引为i的前面加上元素x | |
切片 | 在列表的任意位置添加至少一个元素 | 在原列表上进行改动 |
5、列表的删除
删除操作 | 方法/其它 | 操作描述 |
remove() | 一次删除一个元素 | |
重复元素只删除第一个 | ||
元素不存在抛出ValueError | ||
pop() | 删除一个指定索引位置上的元素 | |
指定索引不存在抛出IndexError | ||
不指定索引,删除列表最后一个元素 | ||
切片 | 一次至少删除一个元素 | |
clear() | 清空列表 | |
del | 删除列表 |
'''删除至少一个元素,将产生一个新的列表'''
lst = [1, 2, 3, 4]
new_list = lst[1:3]
print('原列表', lst)
print('切片后的列表', new_list)
'''不产生新的列表对象,而是删除原列表中的内容'''
lst[1:3] = []
6、列表元素的修改
为指定索引的元素赋予一个新值
为指定的切片赋予一个新值
7、列表元素的排序
(1)调用sort()方法,列表中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True,进行降序排序(通常默认reverse=False)
是在原列表上进行改动
(2)调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变
产生一个新的列表
8、列表生成式
语法格式:[i*i for i in range(1,10)]
表示列表元素的表达式(通常包含自定义变量) 自定义变量 可迭代对象