【问题标题】:How to reduce complexity of function using multiple if statements如何使用多个 if 语句降低函数的复杂性
【发布时间】:2021-03-27 13:56:30
【问题描述】:

我已经为我正在制作的游戏编写了这个函数,但是我觉得使用多个嵌套的 if 语句让我的想法过于复杂。有谁知道这样做更简洁的方法?如果这看起来微不足道,我对编码很抱歉。

该函数检查以下内容:

Team == 0:该行-上一个行是负值

Team == 1:行 - 上一行是正值

def check(item, row, col):
    previousRow = 6 
    if item.team == 0:
        if ((row - previousRow) < 0):
            return False
        else:
            return True
    else:
        if item.team == 1:
            if ((row - previousRow) > 0):
                return False
            else:
                return True



【问题讨论】:

  • 查看Sourcery 以获取重构代码方面的帮助。
  • 谢谢你会做的

标签: python if-statement logic list-comprehension


【解决方案1】:

如果item.team 既不是 0 也不是 1,那么您的代码将失败并且不执行显式的 return 语句,这相当于返回 None。但是,如果您确定item.team 将始终为 0 或 1,那么当对 0 的第一次测试失败时,对 1 的第二次测试就变得不必要了。

所以在item.team永远为0或1的假设下,代码可以简化为:

def check(item, row, col):
    previousRow = 6 
    return row - previous >= 0 if item.team == 0 else row - previousRow <= 0

【讨论】:

    【解决方案2】:

    这就是Sourcery 将您的代码简化为:

    def check(item, row, col):
        previousRow = 6
        if item.team == 0:
            return row - previousRow >= 0
        elif item.team == 1:
            return row - previousRow <= 0
    

    【讨论】:

      猜你喜欢
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      相关资源
      最近更新 更多