我有一个函数,用于在笛卡尔平面上寻找光线的方向:
def direction(self):
if 180 > self.angle > 90:
return (-1, +1)
elif 90 > self.angle > 0:
return (+1, +1)
elif 0 > self.angle > -90:
return (+1, -1)
elif -90 > self.angle > -180:
return (-1, -1)
这看起来有点笨重。有没有更简单的表达方式?它只是给了我一个射线基于角度的象限
Tags:
您可以将角度转换为象限数(0、1等),并在数组中使用索引:
即使当
self.angle
不是整数时,这也有效看起来不错,你可以用一个else来代替最后一个elif
如果使用^{} 和基本trig函数,则根本不需要条件语句:
如果坚持使用条件句,则可以将比较分为两种情况,而不是四种情况:
事实上,您可以使用
bool
是int
的子类这一事实,以完全不同的方式删除条件:使用循环函数,如
sin
、cos
和模(%
),将使代码处理更全面这些公式也将更好地处理角落案件。原始函数将返回
None
,角度为90
。这两个版本不适用。您可以调整条件(例如,有时将<
替换为<=
),以使拐角案例精确地按照您想要的方式工作相关问题 更多 >
编程相关推荐