第五章 程序流程结构

第五章 程序流程结构

顺序结构:

从左往右,从上往下依次执行 写出来的代码都会执行

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 条件1if 条件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}')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值