【问题标题】:Python: Change Logic Operator on the flyPython:动态更改逻辑运算符
【发布时间】:2021-03-14 07:31:19
【问题描述】:

我已经开始深入研究 Python,目前有一个代码 sn-p,在处理作业时看起来像这样:

if conditionA:
    if x > y:
    // perform action

elif conditionB:
    if x >= y:
    // perform same action

else:
    pass

换句话说,取决于conditionAconditionB 是否为真(它们不能都为真,但它们都可以为假)我想检查在任何一种情况下都非常相似的嵌套条件,除了逻辑运算符在“>”或“>=”之间变化。我想学习一种方法来简化这一点,而不必在不为其创建函数的情况下两次包含相同的“动作”代码。我的直觉告诉我,我正在寻找一种方法将逻辑运算符“>”更改为“>=”(反之亦然),具体取决于 A 或 B 是否为真,但我在网上找不到任何关于此功能的信息。如果简化这是不可能的,那么我可以诉诸维护我所拥有的并将“动作”代码简单地制作成一个函数,如果这被认为是最佳实践的话。

谢谢!

【问题讨论】:

    标签: python python-3.x conditional-statements logical-operators


    【解决方案1】:

    为什么不合并条件呢?像这样的:

    if (conditionA and x > y) or (conditionB and x >= y):
        # perform your action
    

    【讨论】:

    • 我主要想知道实现这一目标的最佳实践是什么,这似乎是最优雅和简洁的方法。抱歉,这似乎是一个愚蠢的问题,谢谢!
    • @LP2LP 我明白你的意思。在 Python 中,您不能动态更改比较运算符。我很高兴这似乎是对您来说最优雅和简洁的方法。你能接受这个答案吗?
    【解决方案2】:

    您可以将“相同的操作”包装在一个函数中,并合并条件而不是嵌套它们,例如:

    def action():
        # perform your action
        ...
    
    if condition_a and x > y:
        action()
    elif condition_b and x >= y:
        action()
    

    您也可以将两个条件合并为一个

    if (
        (condition_a and x > y) or
        (condition_b and x >= y)
    ):
        # perform your action
    

    从您提供的信息中,我没有看到更多信息。如果会妨碍可读性,请不要尝试“简化”太多。

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多