python条件判断与嵌套

Python基础语法3

1.条件判断

条件判断
  • 单向判断:if
    '如果……就'用代码表述
# 为宝石数量赋值
stonenumber=6

# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:
    
    # 结果:显示‘你拥有了毁灭宇宙的力量’的结果
    print('你拥有了毁灭宇宙的力量')  

上述代码的实行有三个步骤

  • 第一行代码,用赋值运算符=对当前情况进行赋值:将你拥有的宝石个数6赋值给变量——宝石数stonenumber
  • 第二步,确定if条件:如果变量stonenumber的值>=个数6时,就执行冒号后,下一行的命令。
  • 第三步,用print()命令打印出结果:你拥有了毁灭宇宙的力量。
if单向判断

ps:在条件判断代码中的冒号:后、下一行内容的前面,会空格

  • 空格的学名叫缩进
  • 对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键】
  • 在if条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打:后按回车,开发工具(用来编写Python代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。
  • 被缩进的内容(print()函数)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令
  • 如果赋值满足if条件,计算机就会准确执行if条件内部的命令(即缩进的代码块)。
  • 当我们去掉缩进时,if条件和print命令成为了两个不同的代码组,属于平行关系。if条件下面,缺少了可以执行的动作。无论条件成不成立,都不会执行什么操作,这个条件的存在没有任何意义。
if单向判断小结
逻辑
  • 双向判断:if...else...
    '如果…不满足,就…'用代码描述
# 赋值语句:为宝石数量赋值
stonenumber=3

# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:
    
    # 结果:显示‘你拥有了毁灭宇宙的力量’的结果
    print('你拥有了毁灭宇宙的力量')
    
# 条件:当赋值不满足if条件时,执行else下的命令
else:
    
    # 结果:显示‘去找灵魂宝石’的结果
    print('带着卡魔拉去沃弥尔星寻找灵魂宝石')
if...else..
  • 在if...else条件语句中,if和else各自抱团,形成两个不同的代码块。表示的是条件和其他条件的互斥关系——如果不满足if条件,就执行else其他条件。
逻辑
if...else...小结
  • 多向判断:if...elif...else...
    • 在判断3个或3个以上的条件时,我们就需要借助Python中的多向判断命令:if…elif…else…
    • 这三者共同构成了多向判断的命令逻辑关系:如果if的条件不满足,就按顺序看是否满足elif的条件,如果不满足elif的条件,就执行else的命令
    • 当判断的条件超过3个时,中间的多个条件都可以使用elif。
if...elif...else...
# 为宝石数量赋值
stonenumber=5

# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:
    
    # 结果:显示‘就拥有了毁灭宇宙的力量’的结果
    print('你拥有了毁灭宇宙的力量')
    
# 条件:如果想让宝石数量停留在5个以下,至少一个
elif 0<stonenumber<=5:

    # 结果:显示‘绯红女巫需要亲手毁掉幻视额头上的心灵宝石’的结果
    print('绯红女巫需要亲手毁掉幻视额头上的心灵宝石')

# 条件:当赋值不满足if和elif条件时,执行else下的命令,宝石数量为0个
else:

    # 结果:显示‘需要惊奇队长逆转未来’的结果
    print('需要惊奇队长逆转未来')
#第一行的赋值,会按照从上到下的顺序挨个试一遍,看自己满足哪个条件,满足了就不往下走,不满足就继续试,试到出结果为止。
#elif的运行本质上和else一样,已经带有其他条件的意思,所以elif后可以不接else
if...elif...else小结

2.if嵌套

通过规则一步步过滤,如果底下还有如果(即条件里还套条件)的情况

'''
习题:
考试成绩评价规则:

1. 如果成绩大于等于60分,就是及格,在此前提下:
(1)如果成绩大于等于80分,属于优秀范围;
(2)否则(即大于等于60分而小于80分),属于一般范围。

2. 如果成绩小于60分,就是不及格,在此前提下:
(1)如果成绩小于30分,平时太不认真,属于学渣了;
(2)如果成绩(小于60分而大于等于30分),那么,至少还能抢救一下。
'''
  • if嵌套的应用场景,简单来讲就是:在基础条件满足的情况下,再在基础条件底下增加额外的条件判断。
  • 如上面的基础条件是60分及格,想要判断优秀和一般还要增加额外条件——是否大于等于80;在小于60分不及格基础条件下,想要判断学渣和可抢救还要增加额外条件——是否大于等于30。
historyscore=26

if historyscore>=60:
    print('你已经及格')

    if historyscore>=80:
        print('你很优秀')

    else:
        print('你只是一般般')

else:
    print('不及格')

    if historyscore<30:
        print('学渣')

    else:
        print('还能抢救一下')

print('程序结束')
  • if嵌套的执行顺序
    上述成绩评价规则的代码,总共分为四部分【赋值、if、else、print()】,两个大代码组
if嵌套代码组
  • 在代码组1的if条件和代码组2的else的条件下,又包含了条件判断命令if...else...

  • 缩进相同的命令处于同一个等级,第一步,计算机就要按顺序一条一条地执行命令。

  • 上述代码的计算机执行的顺序:

    • (1)先给historyscore赋值
    • (2)因为if和else是只能留一个的互斥关系,if和else下的代码块只会执行一个,所以计算机要判断赋值的内容满足【historyscore>=60】还是【historyscore<60】的条件——如果满足if的条件,就执行if缩进下的内容,如果不满足就执行else缩进下的内容;
    • (3)执行print('程序结束')。
    • (4)else代码块后面不仅跟着三个print(),还有if,计算机语法的执行逻辑永远都不会变,else下的代码也要一行一行往下执行,并根据条件判断运行对应层级,输出对应结果。

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

运行过程
if嵌套总结

ps:elif也是可以放进嵌套里的。

3.如何写嵌套代码

if嵌套由于涉及多个条件判断,并且是条件套条件的判断,所以为了理清逻辑,可按以下步骤进行,以上述成绩代码为例:

  • 第一步就要搞定最外层那张皮,将最基础的命令和条件写出来
    • (1)把26分的历史成绩赋给变量historyscore
    • (2)用if…else写最基础判断条件如果historyscore>=60时,打印你已经及格,否则,打印不及格;
    • (3)用print()输出程序结束
      在成绩为26分的赋值情况下,只套了一层“条件判断”皮的代码
historyscore=26
if historyscore>=60:
    print('你已经及格')
else:
    print('不及格')
print('程序结束')
  • 第二步,在“第一层皮”里装东西。也就是在条件【historyscore>=60】下,增加额外条件。
    • 额外条件1:当历史成绩大于等于80分,显示结果你很优秀
    • 额外条件2:当历史成绩在60到80分之间,显示结果:你只是一般般
historyscore=26
if historyscore>=60:
    print('你已经及格')
    if historyscore>=80:
        print('你很优秀')
    else:
        print('你只是一般般')
       
else:
    print('不及格')
print('程序结束')
  • 最后一步,为另一个大条件else增加额外条件
    • 额外条件1:当历史成绩小于60,同时还小于30时,输出结果学渣;
    • 额外条件2:当历史成绩小于60,但大于等于30时,输出结果还能抢救一下。
historyscore=26
if historyscore>=60:
    print('你已经及格')
    if historyscore>=80:
        print('你很优秀')
    else:
        print('你只是一般般')
       
else:
    print('不及格')
    if historyscore<30:
        print('你是学渣')
    else:
        print('还能抢救一下')
print('程序结束')
知识总结

练习

请你写出一段代码,判断美国队长的工资水平,代码需要满足如下条件:
1.如果月工资小于等于500美元,显示“欢迎进入史塔克穷人帮前三名”
1.1如果月工资在100-500美元之间,显示“请找弗瑞队长加薪”
1.2如果月工资小于等于100美元,显示“恭喜您荣获“美元队长”称号!”
2.如果月工资在500-1000美元之间(含1000美元),打印“祝贺您至少可以温饱了。”
3.其他情况下,如果工资大于1000美元,打印“经济危机都难不倒您!”
3.1如果工资在1000-20000美元(含20000美元)之间,打印“您快比钢铁侠有钱了!”
3.2如果月工资大于20000美元,打印“您是不是来自于瓦坎达国?”
4.不管赋值改变后输出结果如何,都需固定打印结果“程序结束”

payback = 80
if payback <= 500:
    print('欢迎进入史塔克穷人帮前三名')
    if 100 <= payback <= 500:
        print('请找弗瑞队长加薪')
    else:
        print('恭喜您荣获“美元队长”称号!')
        
elif 500 < payback < 1000:
    print('祝贺您至少可以温饱了。')
    
else:
    print('经济危机都难不倒您!')
    if 1000 <= payback <= 20000:
        print('您快比钢铁侠有钱了!')
    else:
        print('您是不是来自于瓦坎达国?')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。