2017-01-03 16 views
0

Also muß ich den Abstand zwischen einem aktuellen Punkt und einem anderen Punkt in dem Parameter angegeben berechnen & der AbstandEntfernung zwischen zwei Punkten des Abstand Formel

berechnet Return

Meine print-Anweisung in etwa so aussehen muss:

> print p1.distance(p2) 
5.0 

Mein aktueller Code:

import math 

class Geometry (object): 
    next_id = 0 
    def __init__(self): 
     self.id = Geometry.next_id 
     Geometry.next_id += 1 

geo1 = Geometry() 
print geo1.id 
geo2 = Geometry() 
print geo2.id 

class Point(Geometry): 
    next_id = 0 

    def __init__(self,x,y,): 
     self.x = x 
     self.y = y 
     self.id = Point.next_id 
     Point.next_id += 1 

    def __str__(self): 
     return "(%0.2f, %0.2f)" % (self.x, self.y) 

    def identify(): 
     if(p0.id == p1.id): 
      print "True" 
     else: 
      print "False" 

    def equality(): 
     if (self.x == self.y): 
      print "True" 
     else: 
      print "False" 

    def distance(p0, p1): 
     p1 = pts1 
     pts1 = [(7.35,8.20)] 
     p0 = pts0 
     pts0 = [(5,5)] 
     dist = math.sqrt((p0[0] - p1[0])**2 + (p0[1] - p1[1])**2) 
     return dist 

p0 = Point(5,5) 
print p0.id 
p1 = Point(7.35,8.20) 
print p1.id 
print p1 
print p0 == p1 
print p0.id == p1.id 

ich bin nicht sicher, wie die x zu trennen & y-Werte in meiner Point-Klasse zur Verwendung in der Gleichung.

+4

Sie hatte keine Mühe, genau zu tun, dass in Ihrem '__str__' Methode ... –

+1

Ihre' p1 = pts1' Code der 'pts1' Variable zuweisen, bevor sie deklariert ist , was in der nächsten Zeile passiert. – Soviut

+2

Warum weisen Sie den Parametervariablen 'p0' und' p1' zu? – Barmar

Antwort

0

Ihre distance Methode auf seinem eigenen Punkt arbeiten soll (self, wie Sie in __str__ taten) und der andere Punkt (könnte aber auch nur p nennen, oder vielleicht so etwas wie other).

def distance(self, other): 
    dist = math.sqrt((other.x - self.x) ** 2 + (other.y - self.y) ** 2) 
    return dist 

Beispiel für die Verwendung:

p0 = Point(2, 4) 
p1 = Point(6, 1) 
print(str(p0.distance(p1))) 
# 5.0 
1
def distance(self, other): 
    return math.sqrt((self.x - other.x)**2 + (self.y - other.y)**2) 

Sie nie definiert das Verhalten für some_point[index] so versagt es. Greifen Sie auf die Variablen wie Sie sie gespeichert haben, zu.

0

Sie sollten p0.x, , p1.x, p1.y verwenden. Aber Sie sollten die Parametervariablen nicht überschreiben.

def distance(p0, p1): 
    dist = math.sqrt((p0.x - p1.x)**2 + (p0.y - p1.y)**2) 
    return dist 
+0

Ist dies eine Modulebene-Funktion, die zwei Punkte nimmt, oder ist dies eine Methode, die einen Punkt nimmt (und "p0" als Synonym für "p1" verwendet)? Oder fehlt nur die '@ statische Methode'? –

+0

Es ist eine Klassenmethode, 'p0' ist das Objekt, an dem die Methode aufgerufen wird. Es ist nur eine Konvention, es "Selbst" zu nennen. – Barmar

+0

Vermutlich verletze ich wahrscheinlich eine PEP8-Regel. Ich habe das einfach aus dem OP-Code kopiert. – Barmar

Verwandte Themen