【Python】(三)条件判断与条件嵌套

1.条件判断

在Python宇宙,条件判断语句总共有三种表现形式,先从最简单的单向判断:if开始说起:

  • 单向判断:if

示例如下:

# 为宝石数量赋值
stonenumber=6

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

首先,第一行代码,用赋值运算符**=对当前情况进行赋值:将你拥有的宝石个数6赋值给变量——宝石数stonenumber**。

第二步,确定if条件:如果变量stonenumber的值**>=个数6**时,就执行冒号后,下一行的命令。

第三步,用**print()**命令打印出结果:你拥有了毁灭宇宙的力量。所以,if语句的单向判断逻辑,我们可以这样归纳:

img

在这里,你可能注意到了一个细节:在条件判断代码中的冒号**?*后、下一行内容的前面,会空几个格。

首先,在计算机的沟通语言中,空格的学名叫缩进,比如我们写文章都要空两个格,这就叫首行缩进

对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键】

并且,在if条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打**?*后按回车,我们的开发工具(用来编写Python代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。

此时,被缩进的内容(print()函数)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令

  • 双向判断:if…else…

if…else条件语句中,ifelse各自抱团,形成两个不同的代码块。表示的是条件其他条件的互斥关系——如果不满足if条件,就执行else其他条件

总结如下:

img

示例如下:

# 要先为酱酱的体重赋值,酱酱的体重是101斤
weight=101

# 如果体重超过100斤的条件下,就……(条件后需加冒号)
if weight>100:
  
  # 就打印结果:不吃了!(注意检查是否自动缩进)
  print('不吃了')
  
# 如果体重没有超过100斤的条件,就……(else条件前无缩进,条件后需加冒号)
else:

 # 就打印:放心吃吧(注意检查是否自动缩进)
  print('放心吃吧')

  • 多向判断:if…elif…else…
  • 在判断3个或3个以上的条件时,我们就需要借助Python中的多向判断命令:if…elif…else…

    这三者共同构成了多向判断的命令逻辑关系:如果if的条件不满足,就按顺序看是否满足elif的条件,如果不满足elif的条件,就执行else的命令。

    并且,当判断的条件超过3个时,中间的多个条件都可以使用elif

    img

    示例如下:

    # 为宝石数量赋值
    stonenumber=5
    
    # 条件:如果你拥有的宝石数量大于等于6个
    if stonenumber>=6:
        
        # 结果:显示‘就拥有了毁灭宇宙的力量’的结果
        print('你拥有了毁灭宇宙的力量')
        
    # 条件:如果想让宝石数量停留在5个以下,至少一个
    elif 0<stonenumber<=5:
    
        # 结果:显示‘绯红女巫需要亲手毁掉幻视额头上的心灵宝石’的结果
        print('绯红女巫需要亲手毁掉幻视额头上的心灵宝石')
    
    # 条件:当赋值不满足if和elif条件时,执行else下的命令,宝石数量为0个
    else:
    
        # 结果:显示‘需要惊奇队长逆转未来’的结果
        print('需要惊奇队长逆转未来')
        
    
    

    另外,elif后面可以不接else

    注意:Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。

    2.if嵌套

    if嵌套的应用场景,简单来讲就是:在基础条件满足的情况下,再在基础条件底下增加额外的条件判断。

    示例如下:

    historyscore=26
    
    if historyscore>=60:
        print('你已经及格')
    
        if historyscore>=80:
            print('你很优秀')
    
        else:
            print('你只是一般般')
    
    else:
        print('不及格')
    
        if historyscore<30:
            print('学渣')
    
        else:
            print('还能抢救一下')
    
    print('程序结束')
    
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CAbFUvky-1571147328305)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571142791010.png)]

    逻辑图如下:

    img

    要注意的是,elif也是可以放进嵌套里的。

    3.如何写嵌套代码

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

    用之前的例子来进行举例,第一步就要搞定最外层那张皮,将最基础的命令和条件写出来。

    那么,我们的思考逻辑应该是这样(1)把26分的历史成绩赋给变量historyscore;(2)用if…else写最基础判断条件如果historyscore>=60时,打印你已经及格,否则,打印不及格;(3)用print()输出程序结束

    1. 先写第一层if判断
    historyscore=26
    #赋值语句:为历史成绩赋值
    
    if historyscore>=60:
        #条件:当历史成绩大于等于60时:
    
        print('你已经及格')
    
    else:
        #条件:当历史成绩小于60时
    
        print('不及格')
        #结果:输出不及格的结果
    
    print('程序结束')
    #打印最终结果
    
    
    1. 在第一层的if语句块中编写相应代码
    istoryscore=26
    #赋值语句:为历史成绩赋值
    
    if historyscore>=60:
        #条件:当历史成绩大于等于60时
    
        print('你已经及格')
        #结果:输入及格的结果
    
        if historyscore>=80:
            #条件:当历史成绩大于等于60,且历史成绩大于等于80
    
            print('你很优秀')
            #结果:输出你很优秀的结果
    
        else:
            #条件:当历史成绩大于等于60,且小于80时
    
            print('你只是一般般')
            #结果:输出你只是一般般的结果
    
    else:
        #条件:当历史成绩小于60时
    
        print('不及格')
        #结果:输出不及格的结果
    
    print('程序结束')
    #打印最终结果
    
    
    1. 在第一层的else语句块中编写相应代码
    historyscore=26
    
    if historyscore>=60:
        print('你已经及格')
    
        if historyscore>=80:
            print('你很优秀')
    
        else:
            print('你只是一般般')
    
    else:
        print('不及格')
    
        #增加额外条件if...
        if historyscore < 60 & historyscore > 30:
            print("还能再抢救一下")
            
        else:
            print("学渣")
            
    print("程序结束")
    
    

    4.总结

    img

    5.练习

    5.1 寻找宝石

    1. 题目要求

    请你写出一段代码,在一颗宝石都没偷回来的赋值下,进行条件判断,并产生对应的结果:

    1.如果偷回的宝石数是4颗及以上,输出结果获得了打败灭霸的力量,反杀稳了
    2.如果偷回的宝石数是1-3颗,输出结果可以全员出动,殊死一搏
    3.如果偷回的宝石数是0颗,输出结果没办法了,只能尝试呼叫惊奇队长
    注意:标点符号都为英文格式

    1. 题目详解

    1.赋值:因为他们一个宝石都没偷回来,为偷来的宝石stonenumber赋值为0。

    2.用if写第一个条件:如果偷回的宝石数是4颗及以上,输出结果:获得了打败灭霸的力量,反杀稳了

    3.用elif写第二个条件:如果偷回的宝石数是1-3颗,输出结果:可以全员出动,殊死一搏

    4.用else写第三个条件:如果偷回的宝石数是0颗,输出结果:没办法了,只能尝试呼叫惊奇队长

    1. 题目实现
    stone = 0
    if stone > 4 :
        print("获得了打败灭霸的力量,反杀稳了")
    elif 1 < stone < 3 :
        print("可以全员出动,殊死一搏")
        else :
        print("没办法了,只能尝试呼叫惊奇队长")
    
    1. 输出结果

    在这里插入图片描述

    5.2 美国队长的工资

    1. 题目要求

    复仇者联盟的成员也是有工资的,然而,由于美国队长一直被冰封在北极,错过了多次调薪机会,所以美国队长的工资一直是每月80美元。光荣挺进史塔克穷人榜前三名,并获封“美元队长”称号。

    1. 题目详解

    1.根据题目,我们知道这里涉及嵌套条件,所以可以用扒洋葱法梳理代码逻辑
    2.可以先写最外层的if……elif……else……条件
    3.根据题目的从属关系分析,最外层的
    if
    条件和else条件都有额外条件
    4.依次在外层基础条件下添加额外条件

    1. 题目实现
    money = 80
    if money <= 500 :
        print("欢迎进入史塔克穷人帮前三名")
        if 100 < money < 500 :
            print("请找弗瑞队长加薪")
        elif money < 100 :
            print("恭喜您荣获“美元队长”称号!")
    elif 500 < money <= 1000 :
        print("祝贺您至少可以温饱了。")
    elif money > 1000 :
        print("经济危机都难不倒您")
        if 1000 < money <= 20000 :
            print("您快比钢铁侠有钱了!")
        elif money > 20000 :
            print("您是不是来自于瓦坎达国?")
    print("程序结束")
    
    1. 输出结果

    在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值