2017-08-24 15 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

'1'と' 0'の代わりに 'True'と' False'を使います。意味のある名前を使用してください。条件の結果を直接返すことができます。 – Daniel

+0

ありがとうございます。それを編集しました。 – akp

+0

このコードスニペットは問題を解決するかもしれませんが、それがなぜ、どのように問題に答えるかは説明しません。 [あなたのコードの説明を含めてください](// meta.stackexchange.com/q/114762/269535)、本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 **フラッグスタッフ/レビューア:** [このようなコードのみの回答については、downvote、削除しないでください!](// meta.stackoverflow.com/a/260413/2747593) – Patrick

関連する問題