嵌套就是判断条件里还有判断条件。
嵌套语句是就是一个判断语句里还有另一个判断语句里,类似我们的套娃玩具。
之前我们学的判断条件都是独立的,判断语句都是从上到下执行的,不存在条件之中还有条件的情况。
但生活总是问题连在问题,条件接着条件。
【举例说明:征兵标准】
身高标准:男性160cm以上,女性158cm以上。
男性体重:男性不超过标准体重的30%,不低于标准体重的15%。
女性体重:不超过标准体重的20%,不低于标准体重的15%。
标准体重=(身高-110)kg
视力标准:右眼裸眼视力不低于4.6,左眼裸眼视力不低于4.5。手术后双眼视力均达到4.8以上。
年龄条件:年满18至20岁,高中以上文化程度青年和企事业单位职工放宽到21岁,大专学历毕业生放宽到23岁,本科及以上学历毕业生可放宽到24岁。
下面,我们写一个程序来判断某某某是否符合入伍条件。
男性和女性的征兵标准是不一致。我们要判断某某的各项指标是否符合征兵标准,我们首先要判断他的性别,然后再对应性别的各项标准进行判断。
我们先写一个程序,判断身高是否符合标准。
我们要用条件判断语句来实现这个功能,我们第一步需要判断我们在终端获取的性别是什么?
【条件梳理】
最外层判断的是性别。
里层判断的是身高。
# 用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
。
像上述这样一个判断语句里还有一个判断语句的形式,就是条件判断嵌套。
判断性别的语句里还有一个判断身高的语句,即条件判断嵌套。
【外层的条件判断语句】
最外层判断的是性别:
sex = input("请输入你的性别(输入一个字男or女:")
if sex == "男" :
代码块1
elif sex == "女" :
代码块2
里层判断的是身高:
下面是一个单独判断身高的条件判断语句,即代码块2。
当它做为外层判断的嵌套判断语句时,整个代码块向右缩进4个空格。
height = int(input("请输入你的身高(整数,单位厘米):"))
if height >= 158 :
print("符合条件,进入下一关!")
else:
print("淘汰!")
【备注】上述图片来自夜曲编程。
这里的代码块1和和代码块2相对外层的条件判断语句有同样的四个空格的缩进。
程序执行时先判断性别,性别是男,执行代码块1;性别是女执行代码块2。
进入代码块后,里层的判断就是就是我们之前学的简单的if…else…语句。
太复杂的条件判断,我们可以简单的画一个流程图。
就像剥洋葱一样,一层一层往里剥即可。
重点是把最外层的条件先写好。
【温馨提示】条件判断语句的难点在于缩进问题。
里层的代码块相对于外层的代码块永远有四个空格缩进。
注意是整体缩进。
【添加体重的判断】
为了方便大家理解代码,我把体重的标准改为:男性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("程序结束!")
【终端输出】
身高符合条件,进入下一关!
体重符合条件,进入下一关!
左眼视力符合,进入下一关!
右眼视力符合,进入下一关!
程序结束!
sight[saɪt]:视力。
【代码题1】
某商场新开业,搞酬宾活动,注册该商场会员后可参加满减活动。
【参考答案】
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】有兴趣的朋友可以继续吧征兵标准的条件判断写完。
嵌套语句的写法是先确定外层条件再确定内层条件。
只有当外层条件成立时,才有可能进入到内层条件当中继续执行。
【温馨提示】
注意⚠️嵌套语句一定要严格遵守不同级别代码块的缩进规范。
注意⚠️每嵌套一层都需要在原有缩进的基础上,再增加相应的缩进。
如果有程序运行错误,优先考虑下面3个错误:
注意⚠️检查是否忘记了冒号!
注意⚠️检查标点符号是否为英文状态下输入!
注意⚠️检查缩进是否准确!
【备注】以上图片来自夜曲编程。