如何精简冗长的if条件判断语句 能否通过动态调整运算符号减少冗余?
简化方案
你这段逻辑可以完全去掉嵌套if,转换为公式计算,比你要求的仅保留外层if的方案更简洁,逻辑完全和原代码一致:
- 先提取公共计算项
delta = ceil(shift * (i / 2)),避免重复计算 - 将外层判断条件转换为符号系数
sign,控制整体加减方向 - 将x、y的大小比较转换为方向系数,控制对应维度的加减方向
- 直接通过四则运算得到所有结果
以下是优化后的Python代码:
from math import ceil # 函数内部逻辑 delta = ceil(shift * (i / 2)) # 外层条件转换为符号系数 sign = 1 if (i % 2 == 1 or i == 0) else -1 # x、y方向的比较结果转换为方向系数 x_dir = 1 if x1 > x else (-1 if x1 < x else 0) y_dir = 1 if y1 > y else (-1 if y1 < y else 0) # 直接计算所有结果 ny = y + sign * x_dir * delta ny1 = y1 + sign * x_dir * delta nx = x - sign * y_dir * delta nx1 = x1 - sign * y_dir * delta return nx, ny, nx1, ny1
内容的提问来源于stack exchange,提问作者CairoMisr
相关产品推荐
相关产品推荐

