04---python程序控制结构(条件、分支、循环)

💡大纲

⭕如果没有别的语句干预,程序一般是顺序执行的。那么非顺序式的程序控制,就需要根据一定的条件来决定程序运行的路线。以下将介绍程序控制的几种结构。

👉条件测试:比较运算(> < == !=)、逻辑运算(and or not)、存在运算(s in S)

👉分支结构:单分支、二分支、三分支、嵌套语句

👉遍历循环:迭代对象(字符串、列表、元组、字典、range())、循环控制(break、continue)、for...else

👉无限循环:why、how、风向标、循环控制、while...else

一、条件测试

(一)比较运算

a = 100
b = 10
print(a > b)     # True
print(a < b)     # False
print(a >= b)    # True
print(a <= b)    # False
print(a == b)    # False
print(a != b)    # True
print(a <> b)    # True
3 <= 5 >= 4 # 返回的是True还是False
  • Python 支持将多个比较操作符串联起来,这个表达式将对比 3 <= 5 和 5 >= 4,两者都成立,所以结果自然是 True 

💡这里有一个非空要注意一下,可用于判断是否为空

❓什么是非空???

  • 定义为False的对象:None、False
  • 值为0的数字类型:0、0.0、0j、Decimal(0)
  • 空的序列和集合:''、()、[]、{}、set()、range(0)
# ls = []   空的
# ls = 0    空的
ls = [2]  # 非空
if ls:      
    print("非空")
else:
    print("空的")

(二)逻辑运算

1、与(and)、或(or)、非(not)

a = 100
b = 21
c = 12
print((a > b) and (b > c))    # True
print((a > b) or (b > c))     # True
print(not(a > b))             # False

2、短路逻辑 ---从左往右,只有当第一个操作数的值无法确定运算结果时才会对第二个操作数进行求值

3 and 4 # 4,第一个操作数不能确定,需要看第二个(决定的)
0 and 3 # 0,第一个操作数决定为False

0 or 3 # 3,第一个操作数不能确定,需要看第二个(决定的)
3 or 4 # 3

(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9) # 4
# False or 0 or 4 or 6 or 9 从左往右 在4的时候决定了该表达式的性质

3、复合逻辑运算的优先级---非 > 与 > 或

⚠️ 通过加括号的方式,可以优先计算括号里的

(三)存在运算

1、某元素 in 字符串/列表/元组/字典的键或值/集合

Hero = ["盾山", "东皇", "鲁大", "鲁班"]
print("盾山" in Hero)    # True
print("妲己" in Hero)    # False

2、某元素 not in 字符串/列表/元组/字典的键或值/集合

👉序列类型:  数据有位置顺序

👉表示方式:(data1,data2...),元素不可修改,是不可变的列表

👉以索引的形式访问

print("盾山" not in Hero)    # False
print("妲己" not in Hero)    # True

⭕在这里讲一下画流程图与思维导图有助于程序编写

可以去看一下小甲鱼

  • 流程图---开发

  • 思维导图---设计

二、分支结构if

(一)单分支

if 条件:       
  缩进的代码块(条件为真,则执行代码块)

⚠️在条件后面有个冒号不能忘记

age = 24
if age > 18:
    print("恭喜你,成年了!") # 恭喜你,成年了!

(二)二分支

if 条件:
  缩进的代码块(条件满足执行这个)
else:
  缩进的代码块(条件不满足执行这个)

age = 24
if age > 18:
    print("恭喜你,成年了!")    
else:
    print("再过几年吧,小屁孩!")

(三)多分支

if 条件:
  缩进的代码块
elif 条件:
  缩进的代码块
elif 条件:
  缩进的代码块
...
else:
  缩进的代码块

⚠️只执行一个分支语句

age = 24
if age < 7:
    print("再玩两年泥巴")
elif age < 13:
    print("你是小学生")
elif age < 16:
    print("你是初中生")
elif age < 19:
    print("你是高中生")
elif age < 23:
    print("您就是大学生啊")
elif age < 60:
    print("工作达人就是你")
else: # 可以写成elif age >= 60:,这样格式更整齐
    print("累了") 

(四)条件表达式

💡最左侧是条件成立时执行的语句 if 条件 else 最右侧是条件不成立时执行的语句 

👉 判断a、b中的较小值

x = a if a < b else b

 👉判断该生成绩的等级

score = 66
level = ('D' if 0 <= score < 60 esle
         'C' if 60 <= score < 80 else
         'B' if 80 <= score < 90 else 
         'A' if 90 <= score < 100 else
         'S' if score == 100 else
         print("请输入1~100的数值!")

(五)if嵌套

📑题目:只有满足18岁的男生才能参加电子竞技,超过24岁不适合打,未成年不能打

age = eval(input("请输入你的年龄:"))
if age < 18:
    print("不能打电竞")
elif age > 18 and age < 24:
    people = bool(eval(input("男生请输入0,女生请输入1:")))
    print(age)
    if not people:
        print("可以打电竞")
    else:
        print("不可以打电竞")
elif age > 24:
    print("不适合打电竞")
'''
请输入你的年龄:19
男生请输入0,女生请输入1:1
19
不可以打电竞
'''

三、遍历循环for---用于知道循环次数

for 元素 in 可迭代对象:
  执行语句

👉可迭代对象:字符串、列表、元组、字典、range()

👉从可迭代对象中,依次取出每一个元素,并进行相应的操作

(一)直接迭代---列表[ ]、元组( )、集合{ }、字符串" "

Hero = ("盾山", "东皇", "鲁大")
for point in Hero:
    print("这局选择的英雄: "+point)
'''
这局选择的英雄: 盾山
这局选择的英雄: 东皇
这局选择的英雄: 鲁大
'''

(二)变换迭代---字典

Hero = {101: '盾山', 102: '东皇', 103: '鲁大'}
for k, v in Hero.items():
    print(k, v)
for num in Hero.keys():
    print(num)  
'''
101 盾山
102 东皇
103 鲁大
101
102
103
'''

(三)range()对象

res=[] # 输出0~99以内的平方数
for i in range(100):
    res.append(i**2)
print(res[:5])    # [0, 1, 4, 9, 16]
print(res[-1])    # 9801

(四)循环控制:break 和 continue

1、break:结束整个循环 

📑题目:一个班10人参加比赛,班级有超过一个人低于60分,就全部淘汰

scores = [89, 80, 94, 70, 57, 78, 47, 92, 77, 82] 
i = 0
for score in scores:
    if score < 60:
        i += 1 
    if i == 2:
        print("淘汰!!!")
        break
# 淘汰!!!

2、continue:结束本次循环,进入下一次循环

 📑题目:一个班10人参加比赛,找出是谁不及格,告诉班主任!!!

scores = [89, 80, 94, 70, 57, 78, 47, 92, 77, 82]
print(len(scores))
for i in range(len(scores)):
    if scores[i] >= 60:
        continue 
    print("第{0}位选手,分数为{1},不合格".format(i, scores[i]))
'''
10
第5位选手,分数为57,不合格
第7位选手,分数为47,不合格
'''

(五)for 与 else的配合

💡如果for 循环全部执行完毕,没有被break中止(循环条件不再为真),则运行else块

scores = [89, 80, 94, 70, 57, 78, 47, 92, 77, 82] 
i = 0
for score in scores:
    if score < 60:
        i += 1 
    if i == 2:
        print("淘汰!!!")
        break
else:
    print("通过!!!")
# 淘汰!!!

四、无限循环while---用于不知道循环次数,要给定条件终止循环

while 判断条件:(判断条件为真,则继续循环;条件为假,跳出循环)
  执行语句

(一)while可以用bool类型作为判断条件

flag = True # 标定当前状态
while flag
    # 想要执行的语句,当满足自己的需求后
    flag = Flase 
flag = True  
while flag:  
    pass  
    while flag:  
        pass  
        while flag:     
            flag = False     # 循环逐层判断,当flag为false时,循环会逐层退出

(二)while 与 break、continue

👉跟for循环的原理是一样的

(三)while与else的配合

💡如果while 循环全部执行完毕,没有被break中止,则运行else块

👉可以检测循环退出情况(没有完整跑完整个循环)

count = 0
while count <= 5 :
    count += 1
    print(count,end=" ")
else:
    print("正常")
# 1 2 3 4 5 6 正常

⭕总结

👉减少多层循环,可读性差

👉避免死循环,需要给定一定的终止条件

👉判断条件不要写的太过复杂

👉for、while与else的配合可用于对循环退出状态的检查(正常结束、break跳出)

 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盾山狂热粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值