3 条件判断与条件嵌套

先给一个成品感受一下格式:

print('如果你想拥有无限的力量和能量,那必须夺得力量宝石')
print('如果你想扭曲时空和任意地传送,那必须夺得空间宝石')
print('如果你想任意地修改现实,无视任何宇宙规律,那必须夺得现实宝石')
print('如果你想到达任何一个时间点,无论是古老的年代还是遥远的未来,那必须夺得时间宝石')
print('如果你想控制生者和死者的灵魂,那必须夺得灵魂宝石')
print('如果你想拥有不朽的精神力量并操控任何人的思维,那必须夺得心灵宝石')
print('那么,如果让你来选择的话,你想要获得哪颗宝石呢?')

print('请在以下六个选项【1 力量宝石 ;2 空间宝石;3 现实宝石 ;4 时间宝石;5 灵魂宝石 ;6 心灵宝石;】中,选择你最想获得的宝石吧!')

answer=input("请填写:")
if answer=='1':
    print('我告诉你哦,力量宝石保存在山达尔星的新星军团的总部基地')
elif answer=='2':
    print('空间宝石在洛基手里')
elif answer=='3':
    print('雷击已将现实宝石交给收藏家保管')
elif answer=='4':
    print('奇异博士愿意用时间宝石换取钢铁侠的性命')
elif answer=='5':
    print('必须献祭自己心爱的人才能得到灵魂宝石')
else:
    print('幻视头上的心灵宝石被绯红女巫摧毁,但可用时间宝石复原')
3 条件判断与条件嵌套

条件判断

单向判断:if

3 条件判断与条件嵌套

语法格式:

3 条件判断与条件嵌套

小练习:
如果一个人同时拥有六颗宝石,ta就可以实现包括毁灭宇宙在内的所有事情。

3 条件判断与条件嵌套

这段代码是如何实现的呢
第一行步,用赋值运算符=对当前情况进行赋值:将你拥有的宝石个数6赋值给变量——宝石数stonenumber
第二步,确定if条件:如果变量stonenumber的值>=个数6时,就执行冒号后,下一行的命令。

补充:
如果没有缩进

3 条件判断与条件嵌套

IndentationError: expected an indented block(缩进错误:期望一个缩进块)

总结:

3 条件判断与条件嵌套

双向判断:if…else…

3 条件判断与条件嵌套

格式:

3 条件判断与条件嵌套

样例:

3 条件判断与条件嵌套
3 条件判断与条件嵌套

而由于赋值【stonenumber=3】,并不满足【if stonenumber>=6:】这个条件,所以不能执行【print('你拥有了毁灭宇宙的力量')】的命令,只能走第二条else:的路——执行print('带着卡魔拉去沃弥尔星寻找宝石')的结果

分析:

3 条件判断与条件嵌套

总结:

3 条件判断与条件嵌套
3 条件判断与条件嵌套

多向判断:if…elif…else…

3 条件判断与条件嵌套

案例:在连续的战斗之后,灭霸无限宝石的收集之旅,只差最后一颗——心灵宝石。不巧的是,这颗宝石镶在了超级英雄幻视的头上。幻视深知想要阻止灭霸,只能请求绯红女巫,毁掉自己头上的宝石。所以,摆在绯红女巫面前的问题条件是:灭霸已经拥有5颗宝石,如果宝石数大于等于6,世界会被灭霸毁灭。但是,如果想让宝石数停留在5个及以下,她必须要亲手毁掉幻视头上的宝石,同时,还要从灭霸手中至少夺回一颗宝石,才会有胜利的希望。或者,还有第三种胜利的可能——如果想让灭霸手中一个宝石都没有,让一切都未曾发生,那么我们需要穿越时空,回到过去。

3 条件判断与条件嵌套

条件1:如果宝石数量>=6,显示你拥有了毁灭宇宙的力量
条件2:如果0<宝石数量<=5,显示绯红女巫需要亲手毁掉幻视额头上的心灵宝石
条件3:如果是其它情况,显示需要惊奇队长逆转未来

if嵌套

思考:

3 条件判断与条件嵌套

像这种如果底下还有如果(即条件里还套条件)的情况,我们如何用Python把上面的规则写出来,并得出评价呢?
if嵌套的应用场景,简单来讲就是:在基础条件满足的情况下,再在基础条件底下增加额外的条件判断。

因此,彼得·帕克的成绩评价规则,用if嵌套可以像下方代码这样:

3 条件判断与条件嵌套

if嵌套的执行顺序
首先,我们先从整体总览一下,这段彼得·帕克成绩评价规则的代码,总共分为四部分【赋值、if、else、print()】,两个大代码组。

3 条件判断与条件嵌套

并且,在代码组1的if条件和代码组2的else的条件下,又包含了条件判断命令if…else…。
缩进相同的命令处于同一个等级,第一步,计算机就要按顺序一条一条地执行命令。

计算机执行的顺序就是:
(1)先给historyscore赋值
(2)因为if和else是只能留一个的互斥关系,if和else下的代码块只会执行一个,所以计算机要判断赋值的内容满足【historyscore>=60】还是【historyscore<60】的条件——如果满足if的条件,就执行if缩进下的内容,如果不满足就执行else缩进下的内容;
(3)执行print('程序结束')。

计算机语法的执行逻辑永远都不会变,else下的代码也要一行一行往下执行,并根据条件判断运行对应层级,输出对应结果。

3 条件判断与条件嵌套

所以,我们的运行顺序是,先输出的结果不及格,然后再判断历史成绩26分的赋值符合历史成绩<60分且<30分还是历史成绩<60分且>=30分的条件。

3 条件判断与条件嵌套

如何写嵌套代码
if嵌套由于涉及多个条件判断,并且是条件套条件的判断,所以为了理清逻辑,我们可采用扒洋葱大法写if嵌套。

用“彼得·帕克的历史成绩”举例,第一步就要搞定最外层那张皮,将最基础的命令和条件写出来

那么,我们的思考逻辑应该是这样(1)把彼得·帕克26分的历史成绩赋给变量historyscore;(2)用if…else写最基础判断条件如果historyscore>=60时,打印你已经及格,否则,打印不及格;(3)用print()输出程序结束。看在成绩为26分的赋值情况下,只套了一层“条件判断”皮的代码,会出现怎样的结果:

3 条件判断与条件嵌套

正确的话,你应该会看到终端显示不及格、程序结束。

第二步,在“第一层皮”里装东西。也就是在条件【historyscore>=60】下,增加额外条件。

其中,额外条件1:当历史成绩大于80分,显示结果你很优秀;额外条件2:当历史成绩在60到80分之间,显示结果:你只是一般般。

3 条件判断与条件嵌套

最后一步,你要为另一个大条件else增加额外条件了!
其中,额外条件1:当历史成绩小于60,同时还小于30时,输出结果学渣;额外条件2:当历史成绩小于60,但大于等于30时,输出结果还能抢救一下。

3 条件判断与条件嵌套

总结:

3 条件判断与条件嵌套

发布者:LJH,转发请注明出处:https://www.ljh.cool/7520.html

(0)
上一篇 2022年9月11日 上午2:33
下一篇 2022年9月11日 下午4:36

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注