2017-08-24 53 views
1

我今天创造了这行代码,它确定一个数是否整除有什么办法缩短这段代码?

if (numerator/denominator * denominator) == numerator: 
    print "Divides evenly!" 
else: 
    print "Doesn't divide evenly." 

然而,除以0时,我遇到了一个问题,因为我还是想它告诉我它是否会分裂,即使分母是0通过查看分子并查看它是偶数还是奇数。我想出了这个:

if denominator != 0 and (numerator/denominator * denominator) == 
numerator: 
    print "Divides evenly!" 
elif denominator == 0 and numerator % 2 == 0: 
    print "Divides evenly!" 
else: 
    print "Doesn't divide evenly." 

有没有什么办法缩短呢?另外,有没有办法不必添加新的'elif'语句?

+1

不会denominater取消在这里? – Joe

+3

我认为这将更适合在https://codereview.stackexchange.com/ – bummi

+1

我假设你是依靠整数分区'/ /',这是在Py3中需要。分子/分母分母)==分子相当于分子%分母== 0。用'0'划分是不确定的,说这个均匀划分是没有意义的。 – AChampion

回答

3

总之,如果denominator0,你希望它是2

if denominator == 0: 
    denominator = 2 

if numerator % denominator == 0: 
    print "Divides evenly!" 
else: 
    print "Doesn't divide evenly." 

甚至更​​短:

if numerator % (denominator or 2) == 0: 
    print "Divides evenly!" 
else: 
    print "Doesn't divide evenly." 
+0

谢谢!我投票结束这个问题作为题外话题。我一定会用这个! – ThatOneGenie

0
def fun(n,d): 
    return (d==0 and n%2==0) or (d!=0 and n%d==0) 
+1

使用'True'和'False'而不是'1'和'0'。使用有意义的名字你可以直接返回条件的结果。 – Daniel

+0

谢谢。编辑它。 – akp

+0

尽管此代码片段可能会解决问题,但它并不能解释为何或如何回答问题。请[请提供您的代码解释](// meta.stackexchange.com/q/114762/269535),因为这确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 **举报人/评论者:** [仅限代码解答,例如这个,downvote,请勿删除!](// meta.stackoverflow.com/a/260413/2747593) – Patrick