【发布时间】:2015-07-14 07:58:06
【问题描述】:
我目前正在用 Python 编写一个程序来为射影几何建模,而射影点的同余函数看起来很糟糕。
(对于任何感兴趣的人,如果两个投影点都位于通过原点的一条直线上,则它们是全等的。)
class Point(object):
def __init__(self, a, b, c):
self.coords = [ a, b, c ]
def congruent(self, other):
ratio = 0
for i in range(3):
if self.coords[i] != 0 and other.coords[i] != 0:
if ratio is 0:
ratio = other.coords[i] / self.coords[i]
elif ratio != other.coords[i] / self.coords[i]:
return False
elif self.coords[i] != 0 or other.coords[i] != 0:
return False
return True
我是 Python 新手,但我知道通常有一种“Pythonic”的方式来做所有事情。考虑到这一点,我将如何使这更具可读性?
【问题讨论】:
-
这个问题似乎是主观的、基于讨论和意见的......并没有真正的客观答案。
-
代码检查 ratio 为 0 后,将 ratio 赋予一个新值。在那之后,永远不应该重新分配比率。不过,可能有更好的方法来做到这一点。
-
@Patrick,使用循环外的 0 坐标设置比率,然后在索引 1 处开始循环。这将更清楚地表明它在循环期间不会发生变化。
-
我投票结束这个问题,因为它应该被迁移到codereview.stackexchange.com
-
@RobertH 结束问题对迁移没有任何帮助,如果您认为应该迁移,请单击“标记”->需要版主干预->说您认为应该迁移。跨度>
标签: python conditional-statements code-readability