2016-08-29 4 views
-1

Ich möchte, dass mein Code jede Kombination von Koordinaten ausprobiert und zählt, wie viele Punkte es in einem bestimmten Kreis gibt. Jedes Mal, wenn ich meinen Code ausführen, bekomme ich ein ValueError: math domain errorKann keine Zahl in Python 3 quadrieren

Hier ist mein Code

def findPoints(radius): 
x = 0 
y = 0 
centre_x = 0 
centre_y = 0 
numOfPoints = 0 
allFound = False 
while allFound == False: 
    print(str(numOfPoints) + " :::: " + str(x) + "::" + str(y)) 
    dist = math.sqrt(centre_x - x)**2 + (centre_y - y)**2 
    if dist < radius: 
     numOfPoints = numOfPoints + 1 
     x = x + 1 
     if x == radius: 
      x = 0 
      y = y + 1 
+1

Meine Vermutung ist, da Sie nie 'centre_x' erhöhen, Sie am Ende versuchen, die sqrt einer negativen Zahl zu nehmen. – Karin

Antwort

4
dist = math.sqrt(centre_x - x)**2 + (centre_y - y)**2 

Sie sind eine Reihe von Pars fehlt ... dies sollte sein:

dist = math.sqrt((centre_x - x)**2 + (centre_y - y)**2) 
0

nehmen also einen Blick auf diese Zeile:

dist = math.sqrt(centre_x - x)**2 + (centre_y - y)**2 

Überprüfen Sie Ihre Verwendung von Klammern und ich denke, dass Sie Ihr Problem lösen werden.

+1

Dies beantwortet die Frage nicht, es sollte ein Kommentar sein. – Barmar