qweweretrt515
V2EX  ›  问与答

a > b and a or b 在 python 里如何理解,逻辑上理解不过来啊

  •  
  •   qweweretrt515 · Nov 18, 2016 · 3007 views
    This topic created in 3506 days ago, the information mentioned may be changed or developed.

    如果 a>b 且 a 或者 b ?

    a>b 和 a 都为真,就真,否则 b ?

    搞不懂 求指点

    9 replies    2016-11-18 20:20:10 +08:00
    loading
        1
    loading  
       Nov 18, 2016 via Android
    你就不能自己试一下?
    kier
        2
    kier  
       Nov 18, 2016   ❤️ 1
    python 没有三目运算符,所以这个就当三目运算符了
    Hstar
        3
    Hstar  
       Nov 18, 2016   ❤️ 1
    >>> a=1
    >>> b=2
    >>> a > b and a or b
    2
    >>> a>b
    False
    >>> a>b and a
    False
    >>> a or b
    1
    >>> a>b or b
    2
    ltux
        4
    ltux  
       Nov 18, 2016   ❤️ 1
    a > b and a or b 这种写法只有在 a>b 且 a 不等于 0 的情况下才会返回 a, 否则返回 b
    不知道程序的意图,不知道是否真的需要 a 不等于 0 ,所以也无法判断这种写法是否会有逻辑漏洞。
    但是窃以为最好把意图明确写出。如果不需要保证 a 不等于 0 ,那么不如写成 a if a>b else b
    skyleft
        5
    skyleft  
       Nov 18, 2016   ❤️ 1
    这个当三目运算符有问题,如果 a 是 0 或者其他布尔判定是 false 的值,就悲剧了
    skyleft
        6
    skyleft  
       Nov 18, 2016   ❤️ 1
    三目运算符 还是 a if a>b else b 好点
    Kilerd
        7
    Kilerd  
       Nov 18, 2016
    对于这种语义不明,或者说过度压缩代码的行为表示不屑。
    coreki
        8
    coreki  
       Nov 18, 2016 via iPhone
    我也是用 if else 好些
    knightdf
        9
    knightdf  
       Nov 18, 2016
    python lua 里面这种写法多了去了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   926 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 20:10 · PVG 04:10 · LAX 13:10 · JFK 16:10
    ♥ Do have faith in what you're doing.