第五章 程序流程结构
顺序结构:
从左往右,从上往下依次执行 写出来的代码都会执行
print('1')
print('2')
print('3')
选择结构 /条件结构
条件:结果只要是布尔值就行,所以也叫布尔表达式
python靠缩进来表达代码的层次关系,缩进一般使用TAB键
需要做出选择、判断才能执行,写出来的代码不一定被执行
单分支结构
if 条件:
代码块
先判断条件,条件为TRUE,则执行代码块,否者不执行
代码块:可以是赋值、运算、流程结构
aply = input('笔试通过了吗?')
if aply == 'y':
print('明天参加面试')
双分支结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJ6Mxrw0-1648628555130)(Python.assets/image-20211118145829526.png)]
执行顺序:先判断条件,条件为true则执行代码1,为false则执行代码2
if 条件:
代码块1
else:
代码块2
# 模拟QQ登录
# QQ:123456 密码:123
account = input('请输入QQ号:')
pwd = input('请输入密码:')
if account=='123456' and pwd=='123':
print('登录成功')
else:
print('登录失败')
# 输入一个数,判断奇偶性
n = int(input('请输入一个数:'))
if n % 2 ==0:
print('偶数')
else:
print('奇数')
# 模拟取款,输入取款金额,如果余额够,显示余额;否则提示余额不足
q = 10000
a = int(input('请输入取款金额:'))
if a <= q:
print('取款成功!余额:', q-a)
else:
print('余额不足')
多分支结构
多重if结构
if 条件1:
代码块1
elif 条件2:
代码块2
elif 条件3:
代码块3
else:
代码块4
执行顺序:
先判断条件1,如果条件1为true,则执行代码块1
否则判断条件2,如果条件2为true,则执行代码块2
当条件都不成立,则执行else后的代码
场景:一个维度连续区间的多路分支
# 给乘积评级60以下差,60-80中,80-90良,90以上优
score = int(input('请输入成绩'))
if score <60:
print('差')
elif score<=80:
print('中')
elif score<=90:
print('良')
else:
print('优')
# 猜数游戏 输出结果:大了,小了,对了
a = 150
b = int(input('请输入一个数:'))
if b > a:
print('大了')
elif b < a:
print('小了')
else:
print('对了')
# 根据年龄判断是否年龄段(0-6婴幼儿,6-12少年,12-18青年,18以上成年)
age = int(input('请输入年龄:'))
if age<= 6:
print('婴幼儿')
elif age<=12:
print('少年')
elif age<=18:
print('青年')
else:
print('成年')
嵌套if结构
if 条件1:
if 条件2:
代码块1
else:
代码块3
else:
代码块2
场景:多个维度的多路分支
# 超市活动 如果不是会员,消费慢100打9折;如果是会员,消费满200打7折,不满200打8折;根据会员及消费金额输出应付金额。
# pass只是一个占位符,如果不想写代码先用Pass代替
vip = input('是否是会员?')
money = int(input('请输入消费金额:'))
discount = 1
if vip == 'y':
if money>=200:
discount=0.7
else:
discount=0.8
else:
if money>=100:
discount=0.9
循环结构
场景:有重复的事情
特点: 操作:重复在做的事情 条件:继续的条件,结束的条件
如果循环永不结束就叫死循环
编码时循环条件会借助循环变量来表达
while循环
while 循环条件:
循环操作
循环变量的更新
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gDdfaAWG-1648628555131)(Python.assets/image-20211118151550519.png)]
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假 false 时,循环结束。
特点:先判断,再执行 如果循环条件一开始就不成立,循环操作可能一次都不执行 适合循环次数不固定的情况
# 输出10个*
# 循环操作:输出1个*
# 循环条件:count =1 count<=10
count = 1
while count <= 10:
print('*')
count += 1
# 输出1-100之间的数
i = 1
while i <=100:
print(i)
i += 1
# 输出1-100之间的偶数
i = 1
while i <= 100:
if i%2==0:
print(i)
i += 1
# 输出100-1之间的数
a = 100
while 1 <= a <= 100:
print(a)
a -= 1
# 求和1-100
# 循环操作:1+2 +3 +4+。。。。。+100
# 循环变量num=[1,100] sum=0
num = 1
sum = 0
while num<=100:
sum+=num
num+=1
print(sum)
# 求1-100的奇数求和
num = 1
sum = 0
while num<=100:
sum += num
num += 2
print(sum)
# 计数器
# 输入5个学生的成绩,统计80分以上的比例
i = 1
count = 0
while i<=5:
score = int(input(f'请输入第{i}个学生的成绩'))
if score>=80:
count +=1
i+=1
b = count/5
print('80分以上的人占{0}%'.format(b*100))
'''
*****欢迎拨打中国移动服务热线******
1、电话业务
2、宽带业务
3、人工服务
********************************
请选择:2
宽带业务
请问还有其它需要吗?(y是,n否)
'''
while choice == 'y':
print('******欢迎拨打中国移动服务热线******')
print('1.电话业务')
print('2.宽带业务')
print('3.人工服务')
num = int(input('请选择:'))
if num == 1:
print('电话业务')
if num == 2:
print('宽带业务')
if num == 3:
print('人工服务')
choice = input('还需要其他服务吗?')
print('再见')
# 从键盘上接收一个奇数,如果输入偶数,提示请重新输入
a = int(input('请输入一个奇数'))
while a % 2 == 0:
print('请重新输入')
a = int(input('请输入一个奇数'))
print('OK')
for in循环
for 变量名 in 可迭代对象:
循环操作
特点:循环次数固定,优先for;常用来遍历容器对象
可迭代对象:字符串、range对象
range()函数 可以生成整数序列 range(stop) 生成[0,stop)之间的整数序列,步长是1 range()函数只存储这start,stop,step个变量,节省内存
# 生成[0,10)之间的整数
r = range(10)
print(list(r))
# range(start,stop)---[start,stop) 步长为1
r2 = range(1,10)
print(list(r2))
# range(start,stop,step) ---[start,stop) 步长为step
r3 = range(1,10,2)
print(list(r3))
# 猜数字
num = 35
for i in range(1,4):
n = int(input('请猜'))
if n == num:
print('对了')
break
elif n>num:
print('大了')
else:
print('小了')
# 输出5个学生的年龄,求平均值
sum = 0
for _ in range(0,5):
age = int(input('请输入学生年龄:'))
sum +=age
print('平均值为{0}'.format(sum/5))
循环中的break、continue、else
break:中断指令,也使用在循环中,结束当前所在层的循环
# 跑步,跑10圈,7圈跑不动了要求退出
for i in range(1,11):
if i == 7:
print(f'跑到第{i}圈,实在跑不动了,要求退出')
break
print(f'跑{i}圈')
# qq登录,有3次机会,如果有一次成功,直接退出
a = 123456
b = 123
for _ in range(0,3):
user = int(input('账号'))
pwd = int(input('密码'))
if user == a and pwd == b:
print('成功')
break
else:
print('失败')
else:
print('机会用完')
continue:中断指令,也使用在循环中,结束本轮循环
# 统计5个学生成绩80分以上的人数
count=0
for i in range(1,6):
score = int(input(f'请输入第{i}个学生成绩:'))
if score<80:
continue
count+=1
print(f'{count}个学生成绩大于80')
else:和while/for-in搭配使用,不碰到break退出时才会执行到的代码(正常退出循环所执行的代码)
num = int(input('输入一个数:'))
for i in range(2,num):
if num%i == 0:
print('不是质数')
break
else:
print('是质数')
双重循环
一个循环嵌套在另一个循环中
# 计算3个班5个学生的平均成绩
j = 1
while j <=3:
print(f'这是第{j}班')
i = 1
sum = 0
while i <= 5:
score = int(input(f'输入第{i}个学生成绩'))
sum += score
i +=1
avg = sum / 5
j +=1
print(f'平均成绩是{avg}')