9.流程控制
-
流程控制指的是通过代码控制程序执行过程
-
根据代码执行过程不同,可以将代码分为三种结构
- 顺序结构 — 代码从上往下一条一条执行,每条代码执行一次
- 分支结构(if) — 根据条件选择执行或者不执行对应的代码
- 循环结构(for、while) — 代码写一遍,然后重复执行多次
-
-
if 分支结构
a) 单分支结构
# 1)语法:
if 条件语句:
代码块
# 2)示例
score = int(input("输入你的分数:"))
if score > 60:
print("及格")
b) 双分支结构
# 1)语法:
if 条件语句:
代码块
else:
代码块
# 2)示例
score = int(input("输入你的分数:"))
if score > 60:
print("及格")
else:
print("不及格")
c) 多分支结构
# 1)语法:
if 条件1:
代码块1
elif 条件2
代码块2
...
else: #可有可无
代码块n
# 2)示例
score = int(input("输入你的分数:"))
if score >= 90:
print("A")
elif score >= 80:
print("B")
elif score >= 70:
print("C")
elif score >= 60:
print("D")
else:
print("不及格")
# 执行过程:先判断条件1是否成立,如果成立直接执行代码块1然后整个分之结构结束;条件1不成立判断条件2,条件2成立,执行代码块2,以此类推,最后执行else后面的代码块n。
- 循环结构的作用:让代码重复执行
a) for 循环
# 语法
for 变量 in 序列:
循环体
# 常见序列:字符串、列表、元组、字典、集合、迭代器、生成器、range
for i in 'abc':
print(i)
# 让变量去序列中取值,一个一个的取,取完为止,每取一个值执行一次循环体
b) range 函数 - 创建等差数列
'''
1. range(N) - 创建[0, n)的等差数列,差是1
例如:range(6): 0 1 2 3 4 5
2. range(M, N) - 创建[M, N)的等差数列,差是1
例如:range(5, 10): 5 6 7 8 9
3. range(M, N, step) - 创建[M, N),差是 step
例如:range(2, 10, 2): 2 4 6 8
range(10, 2, -2): 10 8 6 4
'''
for i in range(-5, 0):
print(i) # -5 -4 -3 -2 -1
#练习
# 练习1:求100+101+102+...+200的结果
sum = 0
for i in range(100,201):
sum += i
# 练习2:求nums中所有元素的和
sum1 = 0
sums = [89, 10, 22, 11, 4, 8, 9]
for i in sums:
sum1 += i
# 练习3:求nums中所有偶数的和
sum2 = 0
for i in sums:
if i % 2 == 0:
sum2 += i
list1=list(filter(lambda x : x % 2 == 1,[89, 10, 22, 11, 4, 8, 9]))
# 练习4:统计nums中奇数的个数
count = 0
nums = [89, 10, 22, 11, 4, 8, 9]
for i in nums:
if i % 2 !=0:
count += 1
print(count)
c) while 循环
'''
while 条件语句:
循环体
执行过程:
先判断条件语句是否成立,如果成立就执行循环体,执行完循环体再判断条件语句是否成立,成立就再执行循环体。
'''
x = 0
while x < 5:
print("hello world!")
x += 1
- continue 和 break 是只能在循环体中才能使用的关键字
- continue - 结束一次循环 (在循环体的时候如果遇到了continue,那么这一次循环结束,直到进入下次循环)
- break - 结束整个循环
# continue例子:
for i in range(5):
print("hello")
continue
print("123")
# 只有hello打印了五次
for i in range(10):
if i % 3 == 0:
continue
print(i)
# 取0-9不被3整除的数
# break例子
for i in range(5)
print("hello")
break
print("123")
- 当 while 遇到 break (初学者使用while循环的套路)
# while True:
需要重复执行的操作
if 循环结束的条件:
break
a) 使用while循环的场景 - 死循环、循环次数不确定
# 用户输入密码 (循环次数不确定)
password = '123456'
while input("输入密码:") != password:
print("输入错误,请重新输入:")
print("输入正确")
# 猜数字游戏,输入0-100,猜大小
import random
num = random.randint(0, 100)
while True:
n = int(input("请输入一个整数:"))
if n == num:
print("猜对了")
break
elif n < num:
print("猜小了,往大的猜")
else:
print("猜大了,往小的猜")
10 常见数据结构
- 列表 - 如果需要在程序中同时处理多个数据,就可以使用列表
- 认识列表 - list
- 列表是系统类型中容器型数据类型中的一种
- 列表是容器,将[]作为容器的标志,里面多个元素用逗号隔开:[数据1,数据2,数据3…]
- 列表是可变的(列表支持增、删、改);列表是有序的(顺序影响结果,支持下标操作)
- 列表的元素:任何类型的数据都可以作为列表的元素,而且同一个列表中元素的类型可以不一样。
- 空列表 []
- 使用列表 - 增删改查
- 查 - 获取列表元素
- 查单个 - 获取列表中的某一个元素
- 遍历 - 一个一个获取列表中元素
- 增 - 添加元素
- 列表.append(元素) - 在列表的最后添加一个元素
- 删 - 删除列表中的某个元素
- 改 - 修改某个元素的值
- 查 - 获取列表元素
- 认识列表 - list
'''
查
语法:
列表[下标] 获取列表中指定下标对应的元素
列表中的每个元素都有两个下标值
a 从前往后从0开始不断增加的下标值 0 1 2 3......
b 从后往前从-1开始不断减小的下标值 -1 -2 -3 -4......
'''
nums = [100, 200, 300, 400]
print(nums[2], nums[-2]) # 取出300
#
#遍历 一个一个地获取列表中所有的元素
# 案例:统计scores中不及格学生的个数
scores = [89, 78, 67, 10, 45, 99, 50]
count = 0
for i in scores:
if i < 60:
count += 1
print(count)
#增 - 添加元素
# 练习1:提取nums中所有的偶数
nums = [89, 78, 90, 64, 55, 71, 34]
# [78, 90, 64, 34]
new_nums = []
for x in nums:
if x % 2 == 0:
new_nums.append(x)
print(new_nums)
#删除
# 列表[下标] - 删除列表中指定下标对应的元素
movies = ['复仇者联盟', '盗梦空间', '怦然心动', '绿皮书', '肖生克的救赎', '触不可及']
print(movies)
del movies[1]
print(movies)
# 列表.remove(元素) - 删除列表中指定元素(如果元素有多个,会删最前面的那一个)
movies = ['复仇者联盟', '盗梦空间', '怦然心动', '绿皮书', '肖生克的救赎', '触不可及']
print(movies)
movies.remove('盗梦空间')
# 列表.pop() - 取走列表中最后一个元素并且返回
# 列表.pop(下标) - 取走列表中指定下标对应的元素并且返回
movies = ['复仇者联盟', '盗梦空间', '怦然心动', '绿皮书', '盗梦空间', '肖生克的救赎', '触不可及']
print(movies)
result = movies.pop()
result = movies.pop(0)
print(movies, result)
# 4.改 - 修改某个元素的值
# 列表[下标] = 新元素 - 修改列表中指定下标对应的元素为新元素
movies = ['复仇者联盟', '盗梦空间', '怦然心动', '绿皮书', '盗梦空间', '肖生克的救赎', '触不可及']
print(movies)
movies[1] = '阿甘正传'