1. 简介
- 顺序执行
- 分支语句
- 循环语句
2. 分支语句
工作生活无时不在的判断与选择,在编程中被称为
分支语句
2.1 单分支语句
if 判断条件:
条件成立时执行语句块
else:
条件不成立时执行语句块
# 判断输入的数字是否为水仙花数
num = int(input("请输入一个三位数: "))
bw = num // 100
sw = num % 100 // 10
gw = num % 100 % 10
total = bw ** 3 + sw ** 3 + gw ** 3
if total == num:
print("{}是水仙花数".format(num))
else:
print(str(num) + "不是水仙花数")
2.2 判断条件
每个
if语句
的核心都是判断条件的编写
判断条件必须都是返回布尔值True(成立)
或者False(不成立)
的表达式
判断条件中使用
==
符号,来决定前后两值是否相等
判断条件中使用!=
符号,来判断前后两值是否不相等
- 等值判断可以用于
数字
、字符串
、且字符串区分大小写
- 等值判断需注意
前后两值数据类型一致
- 字符串大小写不同的可以先
统一转换大小写
- 数字与布尔表达式的等值比较:数字
0代表False
,非0代表True
是否大于:
>
是否小于:<
是否大于且等于:>=
是否小于且等于:<=
比较判断只能用于数字大小比较
and
:前后条件都成立,结果才成立(与)
or
:前后条件有一个成立,结果就成立(或)
not
:对结果取反(非)
运算符具体请移步:Python运算符
# 血压监测
# 用and语句
high = int(input("请输入您测量的高压值: "))
low = int(input("请输入您测量的低压值: "))
if (high > 90 and high < 140) and (low > 60 and low < 90):
print("您的血压正常")
else:
print("您的血压异常")
# 用or语句
high = int(input("请输入您测量的高压值: "))
low = int(input("请输入您测量的低压值: "))
if (high < 90 or high > 140) or (low < 60 or low > 90):
print("您的血压异常")
else:
print("您的血压正常")
# 用not语句
high = int(input("请输入您测量的高压值: "))
low = int(input("请输入您测量的低压值: "))
if not((high < 90 or high > 140) or (low < 60 or low > 90)):
print("您的血压正常")
else:
print("您的血压异常")
# 用嵌套if语句
high = int(input("请输入您测量的高压值: "))
low = int(input("请输入您测量的低压值: "))
if (low > 60 and low < 90) and (high > 90 and high <140):
print("你的血压正常")
else:
if low <= 60:
print("低压过低")
elif high <= 90:
print("高压过低")
else:
print("血压超标")
- 用and语句时,先写成立执行块(因为and是严格判断,都满足才成立,否则不成立)
- 用or语句时,先写不成立执行块(因为or是多选判断,满足其一就不成立,否则成立)
- 用not语句时,将or语句()成一个整体,再取反,就可以先写成立执行块
2.3 多分支语句
多分支语句是在原有基础上增加
elif
,进行多重判断 (elif 是 else if 的缩写)
if 判断条件1:
条件1成立时执行语句块
elif 判断条件2:
条件2成立时执行语句块
elif ...
else:
其它情况下时执行语句块
多个判断都成立的话,按顺序优先执行第一条成立语句
# BMI(身体质量质数)检测
weight = int(input("请输入你的体重(kg): "))
height = float(input("请输入你的身高(m): "))
bmi = weight / pow(height,2)
print(bmi)
if bmi <= 18.4:
print("偏瘦")
elif bmi > 18.4 and bmi <=23.9:
print("正常")
elif bmi > 23.9 and bmi <= 27.9:
print("过重")
else:
print("肥胖")
2.4 分支语句嵌套
分支语句嵌套是指分支语句中
再次使用if进行二次判断
相比多分支语句,更建议使用分支语句嵌套,会使程序逻辑看起来更清晰
# 使用多分支elif
has_ticket = int(input("乘客是否购买车票(1-是,0-否): "))
knife_length = int(input("请输入刀具长度(cm,0-未携带): "))
if has_ticket and knife_length < 20:
print("刀具未超过20cm,允许上车")
elif has_ticket and knife_length >= 20:
print("管制刀具,车站没收")
else:
print("没有车票,禁止进站")
# 优化: 使用分支语句嵌套
has_ticket = int(input("乘客是否购买车票(1-是,0-否): "))
knife_length = int(input("请输入刀具长度(cm,0-未携带): "))
if has_ticket:
print("车票检查通过,准备开始安检")
if knife_length < 20:
print("刀具未超过20cm,允许上车")
else:
print("管制刀具,车站没收")
else:
print("没有车票,禁止进站")
3. 循环语句
循环是在满足条件下周而复始的运行的情况
3.1 while循环
while 循环条件:
被循环执行的代码块
修改循环的判断条件(跳出循环)
通常循环有明确的执行次数,计数器
控制while循环的次数
,是保存循环次数的变量
计数器常用字母i
(index)来命名
# 利用每次循环自增1设置跳出循环
i = 0
while i < 5:
print("Hello{}".format(i))
i += 1
3.2 死循环
while True:
无退出循环语句
当循环执行条件永远成立时,没有终点的循环称为死循环
3.3 循环的flag
continue
用于跳过当前循环的剩余语句
continue
禁止直接写在循环体中,否则之后的语句永远 无法执行
,通常是放在条件语句后面
# 打印101-183之间能被17整除的数字(用continue)
i =100
while i <= 182:
i += 1
if i % 17 != 0:
continue
print(i)
break
用来终止当前所在的循环语句
# 模仿通信运营商
i = 0
while i < 3:
mobile = int(input("请输入你要查询的手机号: "))
i += 1
if mobile == 13434343344:
print("你的话费余额为100元")
break
print("感谢你的来电")
3.4 循环嵌套
循环嵌套是指在循环中出现循环的使用情况
while 条件1:
while 条件2:
内部循环语句
外部循环语句
- 两个while之间
用缩进区分
- 外侧顶级的while通常称为
外部循环
,缩进到里层的称为内部循环
- 对于循环嵌套,在执行的时候,是
由外到内依次执行的
# 字符画 4x4 的口
i = 0
while i < 4:
j = 0
while j < 4:
print("口", end="") # 表示结尾不换行
j += 1
i += 1
print("")
# 列出1000以内的质数
j = 2
while j < 1000:
num = j
i = 2
is_prime = True # 标识当前数字是否为质数
while i < num:
if num % i == 0:
is_prime = False
break
i += 1
if is_prime == True:
print("{}是质数".format(num))
j += 1