V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
OwO233
V2EX  ›  程序员

请问为什么 if 和 else 要匹配呀?

  •  
  •   OwO233 · 268 天前 via iPhone · 3622 次点击
    这是一个创建于 268 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,比如在 python 中,if 判断条件后,不需要 else 就可以执行下面的语句,为啥还要加个 else 啊?🤔如果需要判断多个条件,也可以直接使用 elif 判断后续条件,不是很理解 else 的用途,求教各位,if 后面加上 else 是为了代码规范还是对资源上会有更优的利用呀?
    16 条回复    2024-04-01 18:03:21 +08:00
    vituralfuture
        1
    vituralfuture  
       268 天前 via Android   ❤️ 1
    else 可以在条件不成立的时候多执行一段逻辑

    举个例子,如果今天下雨就穿雨鞋,否则就穿运动鞋,穿完鞋之后出门

    话说问这种问题,op 是初学编程?
    OwO233
        2
    OwO233  
    OP
       268 天前 via iPhone
    @vituralfuture #1 是啊,想学习变成自己编写一些自动挂机脚本。
    ohayoo
        3
    ohayoo  
       268 天前   ❤️ 1
    if 可以单独存在,不一定要和 else 搭配,如果 condition 是 False ,else 下面的语句被执行。
    换句话说,条件不成立的时,一定要干一件什么事情,则需要 else
    OwO233
        4
    OwO233  
    OP
       268 天前 via iPhone
    @vituralfuture 感谢你的回复。
    请问条件不成立不写 else 后面写一段语句一样可以执行,但是为什么需要写 else 呀?
    OwO233
        5
    OwO233  
    OP
       268 天前 via iPhone
    我知道了,如果不加 else ,前面的 if 判断 true 后还会重复执行一遍,我刚开始逻辑出问题了…😥
    ohayoo
        6
    ohayoo  
       268 天前   ❤️ 1
    @OwO233 #4 [不写 else 后面写一段语句一样可以执行] 那样的话,和你的条件成不成立没有关系,反正会执行
    zictos
        7
    zictos  
       268 天前   ❤️ 1
    elif 也是要指定具体的条件的,而 else 是无需指定具体条件的,不满足前面的条件时就执行 else 里面的代码。如果不需要 else 也可以不用,可以只用 if 或者只用 if 加 elif
    dsb2468
        8
    dsb2468  
       268 天前   ❤️ 1
    python 没太研究过,不过如果是 C++,那则涉及到编译器优化的一些知识。

    比如同样比较是否等于 1 ,if else 和 switch 在编译阶段就会体现出效率的不同:
    https://blog.csdn.net/dsb2468/article/details/72635138
    V2April
        9
    V2April  
       268 天前   ❤️ 1
    else 是如果前面的 if 和 elif 都不满足,直接执行 else 里面的语句。但如果前面的 if 和 elif 有一个被满足,就不会执行。好比你老婆想吃水果了,她优先想吃草莓,但如果草莓没上市买两个苹果也可以。她给你编程:
    '''
    if 有草莓
    买草莓
    else
    买苹果
    end if
    回家
    '''
    这样你总是会带一些水果回家。

    如果编程:
    '''
    if 有草莓
    买草莓
    end if
    回家
    '''
    那没有草莓你就会空手回家。

    如果编程:
    '''
    if 有草莓
    买草莓
    end if
    买苹果
    回家
    '''
    那无论如何你都会买苹果回家。

    当然你也可以写成
    '''
    if cond1
    action1
    elif not cond1
    action2
    endif
    '''
    elif not cond1 和 else 是一样的。但如果你有很多 if~elif~elif~elif......,你最后给一个 else 来兜住所有剩下情况,肯定比写一个 elif not cond1 and not cond2 and......要容易。而且 else 不会做任何判断,只是起兜底作用。有的时候你的 if 判断本身是一件耗资源的事,你用 elif 来代替 else 就很不划算了。
    DOLLOR
        10
    DOLLOR  
       268 天前   ❤️ 2
    写在 else 里和 else 外的效果是不一样的。

    if condition:
    ⬜⬜#下面这句是条件成立时执行
    ⬜⬜action1()
    else:
    ⬜⬜#下面这句是条件不成立时执行
    ⬜⬜action2()
    #下面这句无论条件成不成立都会执行
    action3()
    oliveira
        11
    oliveira  
       268 天前   ❤️ 1
    这个问题,你写个 Demo 运行一遍就知道了啊...
    PrinceofInj
        12
    PrinceofInj  
       268 天前   ❤️ 3
    想起了那个笑话:
    老婆:去菜市场买些苹果,如果有卖西瓜的,买一个。
    过了半小时,老公拿着一个苹果回家了
    老婆:你怎么只买了一个苹果?
    老公:碰上卖西瓜的了。
    lisongeee
        13
    lisongeee  
       268 天前   ❤️ 1
    python 很久不写了,不太熟悉了,来说一下 js 中的情况,按照你的说法

    if(a){}else{} 可以换成 if(a){}{} 但实际上这也是正确的语法结构,看下面的语法结构



    最后的 {} 是一个块级作用域语句,里面的内容会不管 if 的判断如何最后都会正常执行
    EndlessMemory
        14
    EndlessMemory  
       267 天前
    除了 if 情况下的,就使用 else ,有啥毛病吗
    maotao456
        15
    maotao456  
       267 天前
    我现在写代码,在非必要情况下不用 else.

    假设代码是这样

    穿运动鞋
    if 下雨 == true {
    穿雨鞋
    }

    出门
    jorkingwire
        16
    jorkingwire  
       267 天前
    为什么我看不懂了,是我的问题么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1696 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.