安迪Python

V1

2022/08/29阅读:69主题:默认主题

23. python 条件判断嵌套

23. python 条件判断嵌套

1. 什么是嵌套

嵌套就是判断条件里还有判断条件。

嵌套语句是就是一个判断语句里还有另一个判断语句里,类似我们的套娃玩具。

之前我们学的判断条件都是独立的,判断语句都是从上到下执行的,不存在条件之中还有条件的情况。

但生活总是问题连在问题,条件接着条件。

【举例说明:征兵标准】

  1. 身高标准:男性160cm以上,女性158cm以上。

  2. 男性体重:男性不超过标准体重的30%,不低于标准体重的15%。

  3. 女性体重:不超过标准体重的20%,不低于标准体重的15%。
    标准体重=(身高-110)kg

  4. 视力标准:右眼裸眼视力不低于4.6,左眼裸眼视力不低于4.5。手术后双眼视力均达到4.8以上。

  5. 年龄条件:年满18至20岁,高中以上文化程度青年和企事业单位职工放宽到21岁,大专学历毕业生放宽到23岁,本科及以上学历毕业生可放宽到24岁。

下面,我们写一个程序来判断某某某是否符合入伍条件。

2. 体验代码

1.判断身高 (1)
1.判断身高 (1)

男性和女性的征兵标准是不一致。我们要判断某某的各项指标是否符合征兵标准,我们首先要判断他的性别,然后再对应性别的各项标准进行判断。

我们先写一个程序,判断身高是否符合标准。

我们要用条件判断语句来实现这个功能,我们第一步需要判断我们在终端获取的性别是什么?

【条件梳理】

最外层判断的是性别。

里层判断的是身高。

# 用input函数从终端获取性别,赋值给变量sex
sex = input("请输入你的性别(输入一个字男or女:")

# 如果是一名男性
if sex == "男" :
    # 用input函数从终端获取男性的身高
    # 注意这里的height相对于If有4个空格的缩进
    height = int(input("请输入你的身高(整数,单位厘米):"))
    # 男性的身高需要大于等于160
    if height >= 160 :
        print("符合条件,进入下一关!")
    else:
        print("淘汰!")

# 如果是输入的是女
elif sex == "女" :
    height = int(input("请输入你的身高(整数,单位厘米):"))
    if height >= 158 :
        print("符合条件,进入下一关!")
    else:
        print("淘汰!")

print("程序结束!")

【终端输出】

淘汰!
程序结束!

上述代码中,我在终端输入的是155

像上述这样一个判断语句里还有一个判断语句的形式,就是条件判断嵌套。

判断性别的语句里还有一个判断身高的语句,即条件判断嵌套。

3. 条件判断嵌套的执行流程

2.条件判断嵌套的执行流程
2.条件判断嵌套的执行流程

【外层的条件判断语句】

最外层判断的是性别:

sex = input("请输入你的性别(输入一个字男or女:")

if sex == "男" :
    代码块1    

elif sex == "女" :
    代码块2  

里层判断的是身高:

下面是一个单独判断身高的条件判断语句,即代码块2。

当它做为外层判断的嵌套判断语句时,整个代码块向右缩进4个空格。

height = int(input("请输入你的身高(整数,单位厘米):"))
if height >= 158 :
    print("符合条件,进入下一关!")
else:
    print("淘汰!")
3.缩进
3.缩进

【备注】上述图片来自夜曲编程。

这里的代码块1和和代码块2相对外层的条件判断语句有同样的四个空格的缩进。

程序执行时先判断性别,性别是男,执行代码块1;性别是女执行代码块2。

进入代码块后,里层的判断就是就是我们之前学的简单的if...else...语句。

4. 条件判断语句的写法

太复杂的条件判断,我们可以简单的画一个流程图。

就像剥洋葱一样,一层一层往里剥即可。

重点是把最外层的条件先写好。

4.条件判断流程图-征兵标准
4.条件判断流程图-征兵标准

【温馨提示】条件判断语句的难点在于缩进问题。

里层的代码块相对于外层的代码块永远有四个空格缩进。
注意是整体缩进。

【添加体重的判断】

为了方便大家理解代码,我把体重的标准改为:男性60-90公斤;女性45-60公斤。

sex = input("请输入你的性别(输入一个字男or女:")

# 第1个判断语句:判断性别
if sex == "男" :
    height = int(input("请输入你的身高(整数,单位厘米):"))
    # 第2个判断语句:判断身高
    if height >= 160 :
        print("身高符合条件,进入下一关!")
        weight = int(input("请输入你的体重(整数,单位公斤):"))
        # 第3个判断语句:判断性别
        if 60 <=weight <=90:
            print("体重符合条件,进入下一关!")
        else:
            print("体重不符合,淘汰!")
    else:
        print("身高不符合,淘汰!")

elif sex == "女" :
    height = int(input("请输入你的身高(整数,单位厘米):"))
    if height >= 158 :
        print("身高符合条件,进入下一关!")
        weight = int(input("请输入你的体重(整数,单位公斤):"))
        if 45 <=weight <=60:
            print("体重符合条件,进入下一关!")
        else:
            print("体重不符合,淘汰!")
    else:
        print("身高不符合,淘汰!")

print("程序结束!")

【终端输出】

身高符合条件,进入下一关!
体重符合条件,进入下一关!
程序结束!

【添加视力】

为了方便大家理解代码,我此处的视力标准不考虑做手术的情况。
因为左右眼视力标准不一样,需要写成2个判断语句。

sex = input("请输入你的性别(输入一个字男or女:")

# 第1个判断语句:判断性别
if sex == "男" :
    height = int(input("请输入你的身高(整数,单位厘米):"))
    # 第2个判断语句:判断身高
    if height >= 160 :
        print("身高符合条件,进入下一关!")
        weight = int(input("请输入你的体重(整数,单位公斤):"))
        # 第3个判断语句:判断体重
        if 60 <=weight <=90:
            print("体重符合条件,进入下一关!")
            left_sight = float(input("请输入您的左眼视力(浮点数):"))
            # 第4个判断语句:判断左眼视力
            if left_sight >= 4.5 :
                print("左眼视力符合,进入下一关!")
                right_sight = float(input("请输入您的右眼视力(浮点数):"))
                # 第5个判断语句:判断右眼视力
                if left_sight >= 4.6 :
                    print("右眼视力符合,进入下一关!")                
                else:
                    print("右眼视力不符合,淘汰!")
            else:
                print("左眼视力不符合,淘汰!")
        else:
            print("体重不符合,淘汰!")
    else:
        print("身高不符合,淘汰!")

elif sex == "女" :
    height = int(input("请输入你的身高(整数,单位厘米):"))
    if height >= 158 :
        print("身高符合条件,进入下一关!")
        weight = int(input("请输入你的体重(整数,单位公斤):"))
        if 45 <=weight <=60:
            print("体重符合条件,进入下一关!")
            left_sight = float(input("请输入您的左眼视力(浮点数):"))
            if left_sight >= 4.5 :
                print("左眼视力符合,进入下一关!")
                right_sight = float(input("请输入您的右眼视力(浮点数):"))
                if left_sight >= 4.6 :
                    print("右眼视力符合,进入下一关!")                
                else:
                    print("右眼视力不符合,淘汰!")
            else:
                print("左眼视力不符合,淘汰!")
        else:
            print("体重不符合,淘汰!")
    else:
        print("身高不符合,淘汰!")

print("程序结束!")

【终端输出】

身高符合条件,进入下一关!
体重符合条件,进入下一关!
左眼视力符合,进入下一关!
右眼视力符合,进入下一关!
程序结束!
5.条件判断嵌套的对齐
5.条件判断嵌套的对齐

sight[saɪt]:视力。

4. 课后练习

【代码题1】

某商场新开业,搞酬宾活动,注册该商场会员后可参加满减活动。

  1. 消费满1000元减100元;
  2. 消费满2000元减300元;
  3. 消费满5000元减800元。
    要求输出客户需要支付的金额。

【参考答案】

vip = input("请问是否以注册我商场会员(输入是或不是)?")
if vip =="是" :
    cost = float(input("请输入您的消费金额:"))
    if 1000<=cost <2000 :
        print("您需要支付"+str(cost-100)+"元!")
    elif 2000<=cost <5000 :
        print("您需要支付"+str(cost-300)+"元!")
    elif cost >=5000 :
        print("您需要支付"+str(cost-800)+"元!")
    else:
        print("对不起,您消费不满1000元,不能参加满减活动!")
else:
    print("对不起,您不是会员不能参加满减活动!")
print("程序结束!")

【终端输出】

您需要支付4300.0元!
程序结束!

我在终端输入的是会员,消费是4600元。

【代码题2】有兴趣的朋友可以继续吧征兵标准的条件判断写完。

5. 总结

嵌套语句的写法是先确定外层条件再确定内层条件。
只有当外层条件成立时,才有可能进入到内层条件当中继续执行。

【温馨提示】

注意⚠️嵌套语句一定要严格遵守不同级别代码块的缩进规范。

注意⚠️每嵌套一层都需要在原有缩进的基础上,再增加相应的缩进。

如果有程序运行错误,优先考虑下面3个错误:

注意⚠️检查是否忘记了冒号!

注意⚠️检查标点符号是否为英文状态下输入!

注意⚠️检查缩进是否准确!

3.缩进
3.缩进

【备注】以上图片来自夜曲编程。

6.条件判断语句总结
6.条件判断语句总结

分类:

后端

标签:

Python

作者介绍

安迪Python
V1