2016-05-26 2 views
1

距離を見つけるために、私はルートを平方にするために** 0.5を使っていました。これで負の数値が返されますか?** 0.5で負の数値を返すことはできますか?

def distance(x1, y1, x2, y2): 
    return ((x1-x2)**2 + (y1-y2)**2)**0.5 
+0

いいえ、それはあなたの機能を考えると不可能です。 – CoryKramer

+2

それは、なぜ*あなたが 'math.sqrt'を使っていないのですか? – jonrsharpe

+0

特に理由はありません。一方が他方より優先されるだろうか? – Carble

答えて

5

はい、この関数は負の数を返すことができます。これには十分に壊れた入力引数が必要です。

class Whack(int): 
    def __pow__(self, other, modulo=None): 
     if other == 0.5: 
      return -42 
     return Whack() 
    def __sub__(self, other): 
     return Whack() 
    __add__ = __sub__ 

デモ:

>>> x1 = y1 = x2 = y2 = Whack() 
>>> distance(x1, y1, x2, y2) 
-42 

あなたは、このようなPythonの組み込みの浮動小数点数または整数として「通常」の番号を渡すに制限した場合、答えはそうでないので、何もそれが負の数を返すことができないではありません数学的演算の範囲では、**0.5です。

+0

破損した番号を作成していただきありがとうございます。 :-) –

関連する問題