V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qweweretrt515
V2EX  ›  问与答

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

  •  
  •   qweweretrt515 · 2016-11-18 18:17:38 +08:00 · 2491 次点击
    这是一个创建于 2740 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果 a>b 且 a 或者 b ?

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

    搞不懂 求指点

    9 条回复    2016-11-18 20:20:10 +08:00
    loading
        1
    loading  
       2016-11-18 18:20:13 +08:00 via Android
    你就不能自己试一下?
    kier
        2
    kier  
       2016-11-18 18:22:54 +08:00   ❤️ 1
    python 没有三目运算符,所以这个就当三目运算符了
    Hstar
        3
    Hstar  
       2016-11-18 18:22:58 +08:00   ❤️ 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  
       2016-11-18 18:30:44 +08:00   ❤️ 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  
       2016-11-18 18:30:45 +08:00   ❤️ 1
    这个当三目运算符有问题,如果 a 是 0 或者其他布尔判定是 false 的值,就悲剧了
    skyleft
        6
    skyleft  
       2016-11-18 18:31:10 +08:00   ❤️ 1
    三目运算符 还是 a if a>b else b 好点
    Kilerd
        7
    Kilerd  
       2016-11-18 19:49:58 +08:00
    对于这种语义不明,或者说过度压缩代码的行为表示不屑。
    coreki
        8
    coreki  
       2016-11-18 19:50:57 +08:00 via iPhone
    我也是用 if else 好些
    knightdf
        9
    knightdf  
       2016-11-18 20:20:10 +08:00
    python lua 里面这种写法多了去了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4863 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 07:23 · PVG 15:23 · LAX 00:23 · JFK 03:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.