第五章 程序控制结构

第一部分 条件测试

1、比较运算
非空

ls = [1]
if ls:            # 数据结构不为空、变量不为0、None、False 则条件成立
    print("非空")
else:
    print("空的")

2、逻辑运算
与、或、非

a = 10
b = 8
c = 12
print((a > b) and (b > c))    # 与
print((a > b) or (b > c))     # 或
print(not(a > b))             # 非

复合逻辑运算的优先级
非 > 与 > 或
3、存在运算
元素 in 列表/字符串

cars = ["BYD", "BMW", "AUDI", "TOYOTA"]
print("BMW" in cars)
print("BENZ" in cars)

元素 not in 列表/字符串

print("BMW" not in cars)
print("BENZ" not in cars)

第二部分 分支结构——if语句
1、单分支
模板
if 条件:
  缩进的代码块
2、二分支
模板
if 条件:
  缩进的代码块
else:
  缩进的代码块
3、 多分支
模板
if 条件:
  缩进的代码块
elif 条件:
  缩进的代码块
elif 条件:
  缩进的代码块

else:
  缩进的代码块
  
不管多少分支,最后只执行一个分支
4、嵌套语句
题目:年满18周岁,在非公共场合方可抽烟,判断某种情形下是否可以抽烟

age = eval(input("请输入年龄"))
if age > 18:
    is_public_place = bool(eval(input("公共场合请输入1,非公共场合请输入0")))
    print(is_public_place)
    if not is_public_place:
        print("可以抽烟")
    else:
        print("禁止抽烟")        
else:
    print("禁止抽烟")  

第三部分 遍历循环——for 循环
主要形式:
for 元素 in 可迭代对象:
  执行语句
执行过程:
从可迭代对象中,依次取出每一个元素,并进行相应的操作
1、直接迭代——列表[ ]、元组( )、集合{ }、字符串" "
2、变换迭代——字典

students = {201901: '小明', 201902: '小红', 201903: '小强'}
for k, v in students.items():
    print(k, v)
for student in students.keys():
    print(student) 

3、range()对象

res=[]
for i in range(10000):
    res.append(i**2)
print(res[:5])
print(res[-1])

循环控制:break 和 continue
break 结束整个循环
continue 结束本次循环
for 与 else的配合
如果for 循环全部执行完毕,没有被break中止,则运行else块

product_scores = [89, 90, 99, 70, 67, 78, 85, 92, 77, 82] # 1组10个产品的性能评分
 # 如果低于75分的超过1个,则该组产品不合格
i = 0
for score in product_scores:
    if score < 75:
        i+=1 
    if i == 2:
        print("产品抽检不合格")
        break
else:
    print("产品抽检合格")

第四部分 无限循环——while 循环
4.1 为什么要用while 循环
经典题目:猜数字
4.2 while循环的一般形式
主要形式:
while 判断条件:
  执行语句
条件为真,执行语句
条件为假,while 循环结束

albert_age = 18 
guess = int(input(">>:"))
while guess != albert_age: 
    if guess > albert_age :
        print("猜的太大了,往小里试试...")
    elif guess < albert_age :
        print("猜的太小了,往大里试试...")
    guess = int(input(">>:"))
print("恭喜你,猜对了...")

4.3 while与风向标

albert_age = 18 
flag = True     # 布尔类型
while flag:
    guess = int(input(">>:"))
    if guess > albert_age :
        print("猜的太大了,往小里试试...")
    elif guess < albert_age :
        print("猜的太小了,往大里试试...")
    else:
        print("恭喜你,猜对了...")
        flag = False    # 当诉求得到满足,就让风向变一下

4.4 while 与循环控制 break、continue

albert_age = 18 
while True:
    guess = int(input(">>:"))
    if guess > albert_age :
        print("猜的太大了,往小里试试...")
    elif guess < albert_age :
        print("猜的太小了,往大里试试...")
    else:
        print("恭喜你,猜对了...")
        break    # 当诉求得到满足,就跳出循环

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

count = 0
while count <= 5 :
    count += 1
    print("Loop",count)
else:
    print("循环正常执行完啦")

第五部分 控制语句注意问题
5.1 尽可能减少多层嵌套
可读性差,容易把人搞疯掉
5.2 避免死循环
条件一直成立,循环永无止境
5.3 封装过于复杂的判断条件
如果条件判断里的表达式过于复杂
出现了太多的 not/and/or等
导致可读性大打折扣
考虑将条件封装为函数

附注:

ax2 = ax.twinx()  # 让2个子图的x轴一样,同时创建副坐标轴。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值