Python流程控制语句


1. 简介

  1. 顺序执行
  2. 分支语句
  3. 循环语句


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(不成立) 的表达式

判断条件中使用 == 符号,来决定前后两值 是否相等
判断条件中使用 != 符号,来判断前后两值 是否不相等

  1. 等值判断可以用于 数字字符串、且字符串 区分大小写
  2. 等值判断需注意 前后两值数据类型一致
  3. 字符串大小写不同的可以先 统一转换大小写
  4. 数字与布尔表达式的等值比较:数字 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("血压超标")
  1. 用and语句时,先写成立执行块(因为and是严格判断,都满足才成立,否则不成立)
  2. 用or语句时,先写不成立执行块(因为or是多选判断,满足其一就不成立,否则成立)
  3. 用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:
    内部循环语句
外部循环语句

  1. 两个while之间 用缩进区分
  2. 外侧顶级的while通常称为 外部循环,缩进到里层的称为 内部循环
  3. 对于循环嵌套,在执行的时候,是 由外到内依次执行的
# 字符画 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

你可能感兴趣的:(Python流程控制语句)